返回列表 发帖

[原创文章] 关于国内某知名大学网站加密算法的研究

原创作者:柔肠寸断 [3.A.S.T]  http://www.3ast.com.cm5 e: c) S1 ^- h# s: g9 c' K* R
原始出处:http://www.3ast.com.cm
$ k% z* t: c& j3 H; j
/ P; d7 Z$ V5 S5 n8 ^看不懂的直接绕过4 |) _8 ]  ]9 ]8 e/ F- e! L3 L
加密前为:hwy123456, e5 j: ?+ Y1 q8 i$ J7 h$ X
加密后为0F9C1C7A2EE76EBB5C1F4D7526CC4F883F4E
# x  I2 {( t/ P' x0 V
5 A4 q( p+ y5 E+ g' a% K+ [/ ]============================================2 l' a: u: H% i" p& X/ v8 Z3 a
上面是当时自己校内的心情。现在已经解破出来了,分享给大家7 T* e4 P  E! C' m5 l
也就不隐瞒大家什么了,这个是国内某知名大学的后台加密算法
7 U" U7 D: ~  i1 p3 Q: A以下是RSA算法文件8 c# n. n, R$ @9 S" V/ m& f

& a/ T: Z, P5 U) \8 z6 o文件名RSA.ASP
, r0 V' A4 \( X* j===============================================4 i1 o( l; t9 }, N8 I- c& h
<%
8 l0 ^2 [7 l" T  O5 W- PClass clsRSA
. ^" s' S+ t; Y5 p3 gPublic PrivateKey ( A4 M* F: V7 n7 ^8 L/ }9 j" |
Public PublicKey ( K' s7 {2 h; T3 }# Y; \  }
Public Modulus
% y" n' v6 u  @+ xPublic Function Crypt(pLngMessage, pLngKey) - B, f3 {* `- C5 H1 X
On Error Resume Next   C7 l8 e6 G5 ]9 X+ k
Dim lLngMod
' t% g0 z* h0 t- E& z! Y0 cDim lLngResult
) i' ]# X3 A( g! ?8 E1 G$ @6 ]8 VDim lLngIndex
2 R. [) @4 Q" G4 [$ D( R5 TIf pLngKey Mod 2 = 0 Then + P. \+ y, W$ S3 V/ h4 \) V
lLngResult = 1 ' t! g; ]3 h, ]1 ~5 J0 U* |5 o7 `
For lLngIndex = 1 To pLngKey / 2
# ~5 Y' l% |' l  b* C  C1 `3 `lLngMod = (pLngMessage ^ 2) Mod Modulus
) u' V5 p3 Y* ~4 M0 M& [, J% A' Mod may error on key generation
' e9 Q5 y' o! s: glLngResult = (lLngMod * lLngResult) Mod Modulus
4 A* n% {8 j$ s, j4 ~If Err Then Exit Function 0 g) B  k2 v+ f" r
Next ; V. a1 h8 j5 V/ Q0 n* b, n" V
Else ( o, ]6 ]9 n; U; J1 p( ^. A0 j
lLngResult = pLngMessage
) v, }3 r/ ^9 kFor lLngIndex = 1 To pLngKey / 2
: U% a7 D1 _1 ]* _$ d! VlLngMod = (pLngMessage ^ 2) Mod Modulus
5 W% K* `% H! Q+ K4 u; z3 OOn Error Resume Next
- l  [, j" l$ A% D/ U' Mod may error on key generation
0 @& [% J3 v& Q; [9 \+ clLngResult = (lLngMod * lLngResult) Mod Modulus 1 f4 m' |8 m1 B( d
If Err Then Exit Function ) X) c: e/ z# @! O
Next
$ W2 F! p1 ~5 J$ XEnd If , H- c! r! j* s3 p
Crypt = lLngResult 6 k1 p+ G6 d) l1 y5 Y
End Function
/ r6 z, y* {2 c5 i' b1 I& F' a/ c7 |7 K  C
Public Function Encode(ByVal pStrMessage)
5 Q5 K* \) B$ A# b9 ?; kDim lLngIndex
" R# M+ P* [& f5 L& N& }0 CDim lLngMaxIndex + h5 `4 b, X! |) I- b- Q
Dim lBytAscii / O# B/ h0 Q, s! Q2 e9 f6 c
Dim lLngEncrypted
5 W$ l0 v& o" G, l( v: L, [" G$ H0 p. JlLngMaxIndex = Len(pStrMessage)
7 l% K/ J* B$ pIf lLngMaxIndex = 0 Then Exit Function
" S2 w- c9 Q( Y& R+ b$ P+ F' c! ]2 \' NFor lLngIndex = 1 To lLngMaxIndex
/ ^% f3 k% v) ?; s5 olBytAscii = Asc(Mid(pStrMessage, lLngIndex, 1))
) P& t  o1 X* O6 S; [' wlLngEncrypted = Crypt(lBytAscii, PublicKey) 7 l1 V: V* C5 l5 X; A1 E/ N
Encode = Encode & NumberToHex(lLngEncrypted, 4)
4 x. Q0 f& n& p, i# F3 iNext
5 E) w6 ^4 H6 Z% `3 q: hEnd Function & c2 m1 H: Z, e2 S( x9 Q
Public Function Decode(ByVal pStrMessage) & F; W) e) \' |2 L
Dim lBytAscii
) ?) p$ V+ i! h6 F2 wDim lLngIndex 5 l7 t. |3 F3 D7 a
Dim lLngMaxIndex
7 C' @* \" U, n) ^: v/ S0 r9 qDim lLngEncryptedData ( q- E9 B8 V6 z& S
Decode = "" 6 Y+ K: v7 j8 ?8 V8 _/ e
lLngMaxIndex = Len(pStrMessage)
4 x2 p  ], |; O& gFor lLngIndex = 1 To lLngMaxIndex Step 4 : o% S- d' d( u7 |
lLngEncryptedData = HexToNumber(Mid(pStrMessage, lLngIndex, 4))
* O# k2 p0 M3 s$ QlBytAscii = Crypt(lLngEncryptedData, PrivateKey)
2 U  j0 o$ ^9 D' V6 [0 {Decode = Decode & Chr(lBytAscii) 5 y7 d8 @6 [# W6 G2 f
Next " F2 t5 X- p0 `. a% }7 b
End Function 5 X) w6 r9 i5 b2 Z! M. G
Private Function NumberToHex(ByRef pLngNumber, ByRef pLngLength)
% a& V: V  f- g# x) _NumberToHex = Right(String(pLngLength, "0") & Hex(pLngNumber), pLngLength) ' t$ \+ @0 Y; k! J" i  e$ w
End Function
( f8 h, V- Z! w( j/ }Private Function HexToNumber(ByRef pStrHex) ; [2 q" }2 r8 W3 C( [  f  q+ y
HexToNumber = CLng("&h" & pStrHex)
9 c' ^, N/ l% T3 M3 r$ p8 c+ KEnd Function
- J8 C  }# ]- K$ HEnd Class
0 x: O  b& `% K+ N& n% W; tfunction Encryptstr(Message)
4 ]7 Y! ?3 L5 u" L' a. O; i4 }' y- gDim LngKeyE 0 n1 `9 i! e0 t; P
Dim LngKeyD 6 |/ d+ e3 L% _* W$ E6 |6 r
Dim LngKeyN
& k) U/ r+ i/ V0 w/ E0 EDim StrMessage * @( z- @' F" D6 l
Dim ObjRSA
' }. I$ l; a: T4 a8 C' m, J; xLngKeyE = "32823"
1 E2 G. @: r$ L, jLngKeyD = "20643"
+ L. t, S" D4 `3 j6 w; F, NLngKeyN = "29893" 2 m% k$ U( G+ \% k4 [
StrMessage = Message
* {7 k7 \! H5 R' t$ ?. K' s( ]Set ObjRSA = New clsRSA
3 g" \9 N$ z$ c4 U8 Z4 d  S. kObjRSA.PublicKey = LngKeyE
1 l4 ?. L6 d$ t) C; kObjRSA.Modulus = LngKeyN
3 q, A6 t  D% @, w- jEncryptstr = ObjRSA.Encode(StrMessage) 6 A$ ~6 Z* j) u6 ~3 n* S
Set ObjRSA = Nothing
; S# X5 h$ W# ^2 L+ Mend function
* S- g1 C9 F' X; m" y# D* [Function Decryptstr(Message)
; T- R. E. |  s: p" B: s" u1 ?" aDim LngKeyE
, i+ j3 D$ |0 ?- v) J  H  UDim LngKeyD
7 t3 r7 [6 c5 B& G( lDim LngKeyN
/ w* ~3 _3 i. }8 nDim StrMessage 0 Q3 W- b( M! f0 P$ S9 U
Dim ObjRSA 3 T5 ~' l7 W2 \. f$ A2 z) B
LngKeyE = "32823" 8 y6 O: j8 ^/ @, C" i6 P
LngKeyD = "20643"
' ]. W+ q$ o8 \1 s/ ^  K6 @+ Z2 nLngKeyN = "29893" * y* j, J* f0 b+ P4 |
StrMessage = Message ; Y8 }5 d) ^) j0 C
Set ObjRSA = New clsRSA
7 J& g! ]. Q8 s( z& qObjRSA.PrivateKey =LngKeyD
8 y# b9 B0 k* F+ U8 [  f( [) H6 {ObjRSA.Modulus=LngKeyN
' N, n% f2 B( Pdecryptstr=ObjRSA.Decode(StrMessage) " E' e1 ]# h4 M" e: p0 h
Set ObjRSA = Nothing 8 n  h. y5 }% Z& \( ^$ Q8 t
end function * ^; @: }! c; u
%>
8 v7 e: S  c- Q===============================================4 |. D( Z! |, \9 p8 Z
" I. L( R8 H2 A( n5 P
还有一个用于测试这段代码的test.asp7 ~$ K$ q& L0 e/ U6 ~. {
有兴趣的自己搭建个IIS测试下7 L7 F8 _: V8 j: F/ ^
<!--#INCLUDE FILE="RSA.asp"--> / s( \6 k' D1 r9 @# g! S
<%
: u, K) P. m( v, f& w4 t3 mfunction Encryptstr(Message) ; {0 ?; K8 F& N& G, ~& {" o2 V
Dim LngKeyE + d1 V3 n. g: @, `9 O
Dim LngKeyD
* W+ M6 ~* C+ ]0 h  H/ dDim LngKeyN
7 \1 W$ o; H1 |$ C) R. S% [Dim StrMessage ! p$ }  I: F  {2 a, e( D
Dim ObjRSA & h3 `( f+ z: e& i
LngKeyE = "32823"
: A! t' W: |: Y* l- R8 l% jLngKeyD = "20643" 6 T& y3 V% a2 g. R( ~1 g# ]$ n
LngKeyN = "29893"
' K8 K2 c% u! S; |  O. AStrMessage = Message ! a8 o! s3 O1 E4 z( t  T, y+ X" j
Set ObjRSA = New clsRSA ' `8 x( J6 z7 W! y- n8 I; y9 J3 B
ObjRSA.PublicKey = LngKeyE ( [, |6 B8 R: z* E% g( h8 E& n  X
ObjRSA.Modulus = LngKeyN
1 l4 J5 L7 k7 D  BEncryptstr = ObjRSA.Encode(StrMessage) , O& M( }+ |5 s  B' W
Set ObjRSA = Nothing * L) c' w$ X+ Y8 `" P; Z5 l3 f
end function
7 [; W; j6 Z- _function decryptstr(Message)
$ ^6 ?1 j  G) a; P( z! u7 aDim LngKeyE
5 Q3 n  v3 X9 ?, q" p2 u; DDim LngKeyD
  d; B; U7 I5 `5 U0 C2 \Dim LngKeyN
( k* Y6 ]: _( a- l, s/ O9 t5 FDim StrMessage " C0 P) `5 V. V, D! ~- c
Dim ObjRSA 0 _  O7 d9 D; L4 t3 B* O! B
LngKeyE = "32823"
( Z, B. Z( J) [; {7 k- ^LngKeyD = "20643"
% J7 q* p0 B+ H+ }6 K; F$ ?LngKeyN = "29893"
6 z( S% {1 y6 J( VStrMessage = Message
4 S2 Z# n0 U) A/ q0 B& PSet ObjRSA = New clsRSA
! b; ?. V' a4 H  XObjRSA.PrivateKey =LngKeyD
& l: E" s* X7 A4 K* T* }' @ObjRSA.Modulus=LngKeyN
. M7 _: b6 ^! e2 vdecryptstr=ObjRSA.Decode(StrMessage) 0 C1 w( L3 w4 {* r0 i/ U' t% I
Set ObjRSA = Nothing 2 U# [) V( _& l/ }( R: R  Z
end function
8 N0 r6 q+ O: i! \dim last,first
6 V  V# n8 X8 F6 o! Jfirst="!@#$%^&*()" # X' h# k- G& t& ~6 I
Response.Write "加密前为:"&first
$ g9 z6 L3 j- P. ]last=Encryptstr(first) . [" c6 H- W2 g
Response.Write "加密后为"&last
/ @* ~0 K( {- F  e1 p, V5 DResponse.Write "解密后为" &decryptstr(last)
. C/ X5 X; X, ~% B3 ?4 E7 w%> ==============================================
& {6 f9 N# @4 O! P& D. g剩下的就是字符的对照表了  [* `5 \  z1 Q
===================字符集================
9 M' b, O7 _/ ^0 b7 U1_____6EBB
. J) {2 W' j0 _5 G8 v8 {- c5 B. g2_____5C1F
% Y) R9 g5 C! E1 W9 |. T6 y+ j3_____4D75; e* G5 r  Z' u3 i0 |' W
4_____26CC
) B! l; w  ]; O0 k* a. v5_____4F88
" h0 _. E# S% _1 o& a) S( c6_____3F4E
2 ]4 t8 [4 X9 n7_____0A9D
- i/ ~' o( K0 E" m; N8_____1A1C7 D( p- H$ o1 \' ^
9_____6D20: Q5 ]3 ]4 U! y! {0 x; v" `9 G
0_____10897 [/ d6 S" h) g/ F8 L3 m$ E
a_____0F3E. c% i3 E$ ~8 \/ q1 X& _+ l  t- R
b_____3159
% y# U0 C! K2 s+ B3 ^4 kc_____3517
4 y0 q$ [  h6 s! U9 V* ~d_____419C/ L, L3 ^5 {8 K; T& g
e_____615C' W6 Q9 g7 e  H3 ]9 V0 d
f_____556F
0 r. @! h' K8 ?7 X' ?g_____2B7F  u/ F" y6 ~( U# P. ~
h_____0F9C9 T2 {4 o% V+ H$ L0 k
i_____00FA; p" @# z; n2 _
j_____5A50
, B& r$ z) d. S: I( h6 s( W! u/ B  pk_____2850+ Q+ N+ n6 P6 w
l_____3E7B
& L5 ]* F1 j$ y( X' Q$ |5 ]2 j# Om_____71C5
- M" K6 P' v4 ^" B6 \n_____1FC8
7 p/ x  P& S# M8 t0 B, k' zo_____74C1. h2 x( s8 _3 `- N" e
p_____5FB8( o6 S; q1 [$ ]0 l/ J8 }
q_____60850 L4 h7 C& P) S" D1 }4 {: z7 `- I2 R
r_____3AC4
) q0 W9 Q1 B& i1 s( es_____2F50
" `* W: T  M- G; gt_____36F8' N+ l# q- p2 B7 a6 o
u_____7010% B* j  V& U$ }* }( a: N, O& j0 Y
v_____0B42
; k- D. ]6 p6 o' T4 X2 ?w_____1C7A1 L2 G/ w# q* u& _' `, G" [- |2 T
x_____16F8& r8 e* k7 u1 I+ c. n( W, o( ^
y_____2EE7+ ?- u4 W" R! F9 H0 Q
z_____5CF35 P" b8 J3 K7 Y3 @; e
!_____6233+ h- v$ l+ E2 k# i
@_____3A450 J$ h: P3 }& x# N$ `2 k' @5 a/ ~
#_____2291! c$ p: i5 S. |$ C' Q
$_____5D5C2 N- b6 U6 T, L; U. a2 R9 @
%_____09B9* t( X- s' p, J
^_____43EA
6 R2 Y4 V. B# c- P/ e/ S9 k# a&_____62B9
  }8 `! ~' S* R0 |* R3 {& i*_____6301
/ l- P/ a" s! S(_____4659
1 w( K/ j* r8 L+ h% J)_____5C82
希望做站长本人的学生请点击
http://www.3ast.com/viewthread.php?tid=13841
QQ790653916只负责SEO以及收费教学等方面联系,他人勿扰

于智者同行,你会不同凡响;与高人为伍,你会登上巅峰

收藏了。。。。。。。。

TOP

返回列表