返回列表 发帖

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

原创作者:柔肠寸断 [3.A.S.T]  http://www.3ast.com.cm9 ~7 R5 l2 [" h# Y8 H: a
原始出处:http://www.3ast.com.cm8 X2 `. I) o5 ?- C1 C

/ B& a3 L  C2 G; L/ [6 B# p: m看不懂的直接绕过
: w: O  h) V6 c& e3 Q1 ~加密前为:hwy123456
: \) {/ h, a9 H6 G0 H  P7 R" g加密后为0F9C1C7A2EE76EBB5C1F4D7526CC4F883F4E
5 G2 d) J% X+ e) l( U( g5 p: [& g1 ]7 n  p7 T+ F5 o
============================================  [6 q3 A& A" v6 _+ {! n
上面是当时自己校内的心情。现在已经解破出来了,分享给大家: Z) P) r, b! y8 G
也就不隐瞒大家什么了,这个是国内某知名大学的后台加密算法# v, l+ T( `5 r5 l: p( z
以下是RSA算法文件% r+ _  \; i' v, f/ s% J* d
! w1 p% q( i6 B$ l: g$ B
文件名RSA.ASP
& \2 Z8 i/ B8 B, a3 q- \===============================================
& Y1 U4 \8 z! V3 f; N<%
5 n4 e6 u9 W" c& v0 H) NClass clsRSA
( k$ |. }. Z& \& {! N, vPublic PrivateKey 1 l2 d& m8 J% b- v$ a; w
Public PublicKey " w- Y8 e4 h# H* ^6 l; s' f5 Q
Public Modulus 1 b2 U& k; G# x! `) ^% \7 R$ U2 e
Public Function Crypt(pLngMessage, pLngKey)
$ K& R" _% V6 qOn Error Resume Next
* e3 a" j3 `1 E+ HDim lLngMod & v7 h, |; T8 z: M. M6 t" I, `
Dim lLngResult
5 U0 ]# o7 E% U5 q# B) TDim lLngIndex # o) k1 m% m. R+ V" e$ D
If pLngKey Mod 2 = 0 Then 0 P, d. E; a. `( K5 F
lLngResult = 1 ) C$ B6 v! u6 N( u
For lLngIndex = 1 To pLngKey / 2 7 D9 G6 h# ?9 L  R9 |2 o( n+ [. z
lLngMod = (pLngMessage ^ 2) Mod Modulus
* g; B: q7 i9 W% f6 `# M- _  v; T' Mod may error on key generation
. x+ I) y3 i2 |* r) _+ OlLngResult = (lLngMod * lLngResult) Mod Modulus ( O" q- g% |8 ?) `
If Err Then Exit Function 5 C" t0 M+ A! \+ E/ W0 ]1 I" [( D
Next
. |/ W6 g; ~8 N# OElse
3 T2 J* H' f( n& Y1 j% elLngResult = pLngMessage " D* o2 D9 S6 \  l0 P' ?
For lLngIndex = 1 To pLngKey / 2 ' H; u' E! t) }- R2 L
lLngMod = (pLngMessage ^ 2) Mod Modulus 3 L  }+ \* G' f% g# v6 E
On Error Resume Next ( b4 a9 D  O5 r/ r3 t) F
' Mod may error on key generation
) p; D! Q, h# O& F4 Q& {lLngResult = (lLngMod * lLngResult) Mod Modulus 5 j/ j$ `: q/ J/ t
If Err Then Exit Function
9 R( n9 r9 a# A, cNext 2 ?) _8 |. h& \6 f# i" u
End If ) g7 X( [) @9 ]; D9 y
Crypt = lLngResult
- `: o! W8 y5 u, UEnd Function
3 ]0 o' ^0 P: e3 w# r; ?! ^6 `3 p5 X0 g; N/ O& Q% e: a0 e
Public Function Encode(ByVal pStrMessage) 1 K+ N: T% E0 I# k0 a; b- r2 }* J
Dim lLngIndex
# x! D3 R. ]7 ~, x- F- u0 s; f: u* V$ NDim lLngMaxIndex
. m  Z; y! N/ RDim lBytAscii
: d5 [4 J9 G  p2 w! a; N2 TDim lLngEncrypted
7 r3 K# ?3 H8 H* W8 N0 }& F' @lLngMaxIndex = Len(pStrMessage) . I1 s3 m" e- h% z" A
If lLngMaxIndex = 0 Then Exit Function
9 v) o6 {- a' {1 kFor lLngIndex = 1 To lLngMaxIndex
$ e, F0 V" k" Q. jlBytAscii = Asc(Mid(pStrMessage, lLngIndex, 1)) % d* I8 q0 V/ V- ^8 e3 R0 |8 I
lLngEncrypted = Crypt(lBytAscii, PublicKey)
' T- |; t4 u& {Encode = Encode & NumberToHex(lLngEncrypted, 4)
# Z, R/ \% @! c) u6 \' q/ P' BNext 9 I4 u% d2 b7 {$ @" X; ^) l9 {
End Function : ?9 f0 S/ a* k/ m7 j9 k
Public Function Decode(ByVal pStrMessage) 5 Z2 C8 |  G( w
Dim lBytAscii
$ ~3 G$ X  l/ fDim lLngIndex 0 r# T( h1 `  C
Dim lLngMaxIndex 0 N" z! g8 F% j' V, {# K. s
Dim lLngEncryptedData 1 w, h* L! z8 }& D& I, }
Decode = "" ; a0 E! `4 |6 Q
lLngMaxIndex = Len(pStrMessage)
! d# o) f9 x2 u1 qFor lLngIndex = 1 To lLngMaxIndex Step 4 2 h9 c5 m/ }, q$ J
lLngEncryptedData = HexToNumber(Mid(pStrMessage, lLngIndex, 4)) * H6 z0 \- [8 j
lBytAscii = Crypt(lLngEncryptedData, PrivateKey)
. t' }) T" P# c( V$ y0 HDecode = Decode & Chr(lBytAscii) ( w5 Q1 `& W! ]% C$ L* x
Next
$ e" ~, X6 h3 v" ^9 U4 n( `8 kEnd Function & \# g9 _5 I+ G9 j3 k: i
Private Function NumberToHex(ByRef pLngNumber, ByRef pLngLength)
( j- c; C6 t5 y1 }4 BNumberToHex = Right(String(pLngLength, "0") & Hex(pLngNumber), pLngLength)
$ @( `# l0 M/ e+ G  MEnd Function 1 R& k2 }# Z1 z  X/ @4 w1 J/ e
Private Function HexToNumber(ByRef pStrHex) - z- z* G6 }& X( T6 j$ h0 S
HexToNumber = CLng("&h" & pStrHex) 0 G+ ^1 V5 K5 ^" q7 K1 R, A& M  K1 P
End Function % E; b0 e4 U, z5 ^$ Y* b
End Class
2 _; a0 w  U7 v. nfunction Encryptstr(Message)
# N: x" H) {+ i0 kDim LngKeyE ' `/ B3 X1 T5 V
Dim LngKeyD
8 P2 L5 w4 P8 H$ K: x/ ]+ MDim LngKeyN 4 E5 p. b- @. ~( Z: s2 d
Dim StrMessage - B. W4 g3 g7 E! `
Dim ObjRSA   Q) [8 e3 p& K, L
LngKeyE = "32823"
9 ?9 o: o  d* B1 i, _LngKeyD = "20643"
' f3 h* n) l' g9 h" yLngKeyN = "29893" 3 d( p+ \- ?, P# N4 K8 G; o
StrMessage = Message
/ F1 Y7 V; V0 }5 i% ~; FSet ObjRSA = New clsRSA
! P0 ~; l( W) Y- Y' GObjRSA.PublicKey = LngKeyE " j2 s, p& l- J0 i% ?" s
ObjRSA.Modulus = LngKeyN
: x- g1 ~8 r- q2 N1 `3 hEncryptstr = ObjRSA.Encode(StrMessage) - E* X/ O  A: b: b! N! P1 D
Set ObjRSA = Nothing   R8 V4 E- X; }9 }
end function3 r: s) ^0 @) h, k4 ^8 n: r
Function Decryptstr(Message)
; \& n& s" {$ O0 O# F( L+ ]Dim LngKeyE ! G3 u3 `+ |7 m+ F/ H% @* a
Dim LngKeyD - J# s6 ^8 m2 j9 @
Dim LngKeyN
/ t1 G: L3 C' a, ?0 eDim StrMessage 5 Y- m) k4 X3 G- Z% E
Dim ObjRSA 4 G3 J. K! b) [+ m  R. F
LngKeyE = "32823" 8 o4 c4 M6 ?5 a3 _
LngKeyD = "20643"
; C0 v# V: {& tLngKeyN = "29893"
, P, U+ j+ I$ z+ e; \7 DStrMessage = Message 2 [5 ~5 d2 E& I7 S% J1 I
Set ObjRSA = New clsRSA & V9 t  o0 a+ F8 s$ l/ J
ObjRSA.PrivateKey =LngKeyD
) ?! _% P1 C3 }# _ObjRSA.Modulus=LngKeyN
: L% u* J# u2 W, S: q( F7 S7 g5 m. ndecryptstr=ObjRSA.Decode(StrMessage) 3 Q8 x$ t1 y, K, |5 h0 I
Set ObjRSA = Nothing
7 o8 U! \% }4 kend function
8 k& M/ o2 Q* e9 L6 M%>% \5 O7 E' s5 X# K5 d
===============================================
) _& L! N2 r; [/ r* [; o4 k* D$ o) A
还有一个用于测试这段代码的test.asp
; d  d* |! R3 p4 _7 J有兴趣的自己搭建个IIS测试下
2 D4 c9 V& F. G3 U* }0 r1 v$ u, H% f<!--#INCLUDE FILE="RSA.asp"-->
0 ?6 }+ [" l! K5 O, E. O$ ~9 {<%
) E4 s0 ^, ^6 I5 `  ]9 g* Lfunction Encryptstr(Message) ) X1 @; O7 v8 I" l/ A
Dim LngKeyE
$ h3 c! H! a2 ^0 a; DDim LngKeyD
6 \# \: \) y- i+ pDim LngKeyN " P% A3 d0 _) [) |% x1 e
Dim StrMessage 3 Q) n4 Y3 \- b5 Z
Dim ObjRSA
1 ^2 i0 h+ \! YLngKeyE = "32823"
, K* R' y8 x' bLngKeyD = "20643"
4 J/ P% \( F/ z# m  |' l1 ]LngKeyN = "29893"
! M  A1 H- t( B" {6 HStrMessage = Message
  D, T6 N4 o) uSet ObjRSA = New clsRSA
" \# J2 V2 m( R7 K) i( k% _+ hObjRSA.PublicKey = LngKeyE
) H, b4 _& }; j' C8 M7 rObjRSA.Modulus = LngKeyN
3 F& N' k* ?! ]Encryptstr = ObjRSA.Encode(StrMessage) & o" X, a. L2 l' f/ M
Set ObjRSA = Nothing , X" i" ?& T* ^+ P# N: `8 V* L  d
end function # ^* o; \8 q5 W% D" E  E- X) v
function decryptstr(Message) . r  T/ d6 }/ K6 D. j0 m1 M
Dim LngKeyE
- f% O+ ?% [* z2 \, m9 kDim LngKeyD
& i7 u: m+ h* H# l: Y; w$ p  P0 DDim LngKeyN # Z+ [( U8 i0 J. X/ W$ s
Dim StrMessage " M+ V0 Z; m4 P- Z2 u
Dim ObjRSA
/ D( F4 \- Q. i% t3 Z1 m/ U+ ZLngKeyE = "32823"
7 Q" e! S" ]( E. eLngKeyD = "20643"
7 F4 A3 f- A+ y+ r1 ?. \# pLngKeyN = "29893" % V$ T* ]2 @3 s; d8 k
StrMessage = Message
$ a# K9 y" Z) g6 vSet ObjRSA = New clsRSA / [  E" d, L6 e: o2 ~  L8 g! R# F( q
ObjRSA.PrivateKey =LngKeyD
% p) l- x7 X: f5 f5 q; \ObjRSA.Modulus=LngKeyN ' q( i$ W' Q/ E2 z
decryptstr=ObjRSA.Decode(StrMessage)
% w1 H" o% Q3 J5 s1 g3 `Set ObjRSA = Nothing
! S! f* w& R$ b, c0 @% U* P8 Vend function   A  Z, I$ I4 V2 w+ k
dim last,first
: V: }- r7 O2 y, L) V& }) k; Ofirst="!@#$%^&*()"
2 J) h2 k5 i' p3 mResponse.Write "加密前为:"&first % s6 n) A2 ?) s' s- K& N5 ~
last=Encryptstr(first)
& E0 M1 p& w$ G/ M' Y0 e: hResponse.Write "加密后为"&last
3 ^0 R8 x( A; v) S; E, w( s# a6 a, `Response.Write "解密后为" &decryptstr(last) + }2 |/ x& b/ d$ i' g, _; T5 H& }
%> ==============================================  W7 m% M) M( e7 G) y
剩下的就是字符的对照表了3 v+ Z! h3 E/ d! H
===================字符集================; i+ z, k  h& p* m& {/ B# ?
1_____6EBB
; h6 E8 \0 L* P  a) q  n2_____5C1F
" F! I9 K0 m3 Y$ O9 C9 h# h" s1 V3_____4D75& M2 H0 s, }9 a) @* v/ Y6 v
4_____26CC: L6 @5 ?+ x1 U
5_____4F88
( D) n. v2 C* Z: z& }& ~+ Z6_____3F4E- z- h" A% C8 I6 K
7_____0A9D! Q( n( R) D6 o
8_____1A1C
- h" F' t$ o. d, C1 m5 F9_____6D20: u  H+ V% P# K" l; |2 x
0_____1089. C5 a; ]+ u7 N% \
a_____0F3E
' u1 G7 h6 F. I) _4 r( I1 ?* ]b_____3159) T0 U* w0 L/ Y
c_____3517& w3 E6 `6 Z) T! f6 U
d_____419C3 d# J7 v5 K6 b
e_____615C
/ o. n6 k  \% R: v: A# B. e$ a! jf_____556F
; A9 t) q* `4 K) kg_____2B7F
) D7 }& Q0 c2 @1 ]$ v7 D; d. @* Xh_____0F9C
6 S, G* T! O0 d; `6 }i_____00FA5 s8 F- L* @# E( a
j_____5A50
# W) A; B2 F8 T3 ?$ fk_____2850) _5 B3 D9 {% A6 W8 i  v" I( |
l_____3E7B
/ @/ ~' i+ {) @m_____71C58 c, [7 i+ g8 N2 D( c) f" o0 ~
n_____1FC8/ M* t0 q3 b& r& |& F' E
o_____74C1
' C% K! n1 @7 H7 i) Ep_____5FB8
( C$ D, s7 V: k! f* ^# R; M* Eq_____6085( Q3 Q$ k+ ?* B& c( {% k
r_____3AC4
# T1 O; d, N$ l& Ss_____2F50
/ {1 T( d/ S7 ]$ ^4 `# n- tt_____36F81 Q0 `. n" X* q- A1 n
u_____7010
8 b# m; Y" I/ R. e0 hv_____0B42
5 a' Z; K: n( Ow_____1C7A
0 ~. f* C  L8 R* J/ ix_____16F8  Q( r5 V8 U  C/ p
y_____2EE7& v; K$ C* q' r+ R
z_____5CF3
: s) a; \) l$ c# O# w" ~& u!_____6233$ s) w7 y" z9 Y# r, r2 A
@_____3A45! `/ t, u3 y% P- y
#_____2291
0 G: B- _8 S& F, O$_____5D5C
, J' Y: H$ h+ C. z%_____09B9$ o2 M( p; @& C  O5 V6 Q$ l6 b
^_____43EA4 c  O  b* Y2 W
&_____62B96 A1 F& Y9 V! F1 D0 w$ h; C3 h
*_____6301
4 F: Z: X4 p" g7 A(_____46596 g# l# K2 {7 ~0 A! O, f0 u
)_____5C82
希望做站长本人的学生请点击
http://www.3ast.com/viewthread.php?tid=13841
QQ790653916只负责SEO以及收费教学等方面联系,他人勿扰

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

收藏了。。。。。。。。

TOP

返回列表