返回列表 发帖

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

原创作者:柔肠寸断 [3.A.S.T]  http://www.3ast.com.cm7 L* x2 ^' i- h+ u" e
原始出处:http://www.3ast.com.cm
4 ^  b- _4 p  _' J& U
0 c5 v( b* j5 U; J/ M1 h看不懂的直接绕过
! _5 ^; o( ~9 ?8 j& Q加密前为:hwy123456
) N% b2 A) z: p2 Z加密后为0F9C1C7A2EE76EBB5C1F4D7526CC4F883F4E% ?- a# M2 O8 H: N9 c1 t
  C' y* M* x' v  U
============================================
" S  B3 X7 a: d" y9 j上面是当时自己校内的心情。现在已经解破出来了,分享给大家6 E9 ]! o% I5 M1 O4 r
也就不隐瞒大家什么了,这个是国内某知名大学的后台加密算法. ^6 m9 D! C9 M) \2 {4 i
以下是RSA算法文件9 a/ d9 b5 W7 A, B$ t/ c

! x3 J8 m4 L9 }( x  E文件名RSA.ASP* E8 `5 x" j/ c2 y
===============================================. Y! i; m$ y. B1 {( [- t
<%
& f% r& c# W% `/ lClass clsRSA
2 ]& g. a7 U! E* X$ KPublic PrivateKey + J$ C! z( I# [. N
Public PublicKey
5 V8 D5 g/ |# mPublic Modulus
" V8 Y, R; K) s4 cPublic Function Crypt(pLngMessage, pLngKey) : S- l% I- Y1 E+ w
On Error Resume Next : I/ l( v" @; l' l% v5 _' o$ u
Dim lLngMod
8 a( U# J/ N0 l! XDim lLngResult
) O: |) l& P; w$ Q, T# eDim lLngIndex 6 A2 \# F; S! A0 ?
If pLngKey Mod 2 = 0 Then & L6 e7 _0 `, `0 G+ u
lLngResult = 1 / k) S. H# Z! N, k# n, d
For lLngIndex = 1 To pLngKey / 2   z* S, \+ N4 X, u/ t. x7 N  K" f
lLngMod = (pLngMessage ^ 2) Mod Modulus ! c: ?, `) d! p5 \+ {* u
' Mod may error on key generation 7 d% T7 G, ]) G" B) |% V( _
lLngResult = (lLngMod * lLngResult) Mod Modulus
( d! h" S7 m3 `' I7 ?If Err Then Exit Function
* x6 J+ M0 _8 _2 w8 DNext
7 n, e& E, o; NElse
. c+ M: o$ }# G2 ?7 f9 p+ klLngResult = pLngMessage
( g% O6 p- D7 k  v+ A8 BFor lLngIndex = 1 To pLngKey / 2
" M7 h) u8 K. |2 l& AlLngMod = (pLngMessage ^ 2) Mod Modulus 8 o' Q8 v' s* w
On Error Resume Next 5 t# o( s* r" T1 C. Z0 H- }3 k
' Mod may error on key generation 4 Q6 _- z. H; A9 g# m7 S$ g- a
lLngResult = (lLngMod * lLngResult) Mod Modulus . e. }: \8 r0 p4 L7 f
If Err Then Exit Function ; S/ a; |; r1 b- r
Next 1 A" B. m& v7 c" x6 k' S, D
End If ' W8 N- r4 f5 D5 a$ x
Crypt = lLngResult ) Z" T; q* Q+ L* c8 P& a: P
End Function! c9 D  Y5 C9 `. T  p

3 u0 |, f1 F& V1 W7 aPublic Function Encode(ByVal pStrMessage) + M! ^0 Q! `3 D( D7 \
Dim lLngIndex
' `0 L4 ~! E  ^" nDim lLngMaxIndex : F; e1 J# ?: b4 e3 x( H. K
Dim lBytAscii ) b, q/ j" R4 A
Dim lLngEncrypted ; J( g" E) Y, F8 V& F
lLngMaxIndex = Len(pStrMessage)
% ]) d% D4 K: K- e0 M  Y* X' tIf lLngMaxIndex = 0 Then Exit Function 2 X. g6 Z; @0 F% P
For lLngIndex = 1 To lLngMaxIndex ! u, p2 O9 I# }4 t, T# `, n/ I
lBytAscii = Asc(Mid(pStrMessage, lLngIndex, 1))
, A) @5 m; s$ c, p2 [4 m  a6 ^( rlLngEncrypted = Crypt(lBytAscii, PublicKey)
9 x8 R) q6 N6 P- qEncode = Encode & NumberToHex(lLngEncrypted, 4) - g" M4 M# O" D- o. e2 O% r. V
Next 9 q% [% j1 v" e$ ^6 Y0 V% ?
End Function
. b" e. }; U/ m9 {Public Function Decode(ByVal pStrMessage) 0 i  D- i  X1 k$ Y- Z3 A& H: N
Dim lBytAscii   z8 o: \) c3 V1 o: J3 A: H
Dim lLngIndex
/ k* ~) e  L% M3 m6 Z- P0 tDim lLngMaxIndex & w' i9 p/ R+ r: B/ o
Dim lLngEncryptedData $ T" d4 v/ B* ?  d3 a
Decode = "" ) \0 u0 f! H" W! K
lLngMaxIndex = Len(pStrMessage) 0 Y, F- ^7 X/ T/ _% ~. p) P/ h
For lLngIndex = 1 To lLngMaxIndex Step 4
! d" M( r5 g$ z' OlLngEncryptedData = HexToNumber(Mid(pStrMessage, lLngIndex, 4))
" y' Q# ^; u/ Z" H+ @! i) s# K- ~lBytAscii = Crypt(lLngEncryptedData, PrivateKey) ! p0 ^& u9 y3 j7 D4 V
Decode = Decode & Chr(lBytAscii)
  K, {" p% {; B8 l/ f3 x& L2 QNext
( M6 u( P( z9 Z$ x' m0 H: o4 AEnd Function
/ s8 f8 J# R, r; W( M2 L" t9 G+ rPrivate Function NumberToHex(ByRef pLngNumber, ByRef pLngLength)
- [: F: e( |5 c1 H0 SNumberToHex = Right(String(pLngLength, "0") & Hex(pLngNumber), pLngLength) / d. ~" k8 i" ]0 ^! R
End Function
  ~% T8 W! }0 H5 q1 ~5 W5 r% fPrivate Function HexToNumber(ByRef pStrHex) ; o& ?6 T; j* K! w; W3 c0 e+ g
HexToNumber = CLng("&h" & pStrHex) % M6 |  e1 L2 F
End Function ( |# l& J3 A, ]6 M
End Class
4 D; y, [, A5 G6 C& Pfunction Encryptstr(Message) 7 f9 ~! ?6 {( y8 N' p
Dim LngKeyE # S1 h" n  J5 I8 N# B# R5 h
Dim LngKeyD ; }! S' [* A: s2 q- R
Dim LngKeyN 9 b* \$ f6 M/ \4 M6 o
Dim StrMessage * Y9 V& \# c( p- D- F/ r; z" k/ d$ H
Dim ObjRSA 3 W: P6 Z" e5 V8 M4 {  a2 ?
LngKeyE = "32823"
' j/ C* \& q+ o" t' q- k, |0 PLngKeyD = "20643"
0 {- ~- }' v0 N" k9 i$ ]- }LngKeyN = "29893" ; z: U" ]' H9 P1 s% l
StrMessage = Message 6 K+ ^1 _6 j& Q* [
Set ObjRSA = New clsRSA
. }. C: G2 O2 |& \ObjRSA.PublicKey = LngKeyE
" f7 ^6 f: j$ cObjRSA.Modulus = LngKeyN
8 R+ C: k9 U9 f- G" n4 tEncryptstr = ObjRSA.Encode(StrMessage)
2 l8 |* R8 l, {, _4 h$ }# GSet ObjRSA = Nothing
% a! y! X+ Y: H* C0 Zend function2 p9 _$ {) Y1 B% e9 H7 g& `4 `
Function Decryptstr(Message) : i% X9 u4 {. M$ q3 L- \% n5 m
Dim LngKeyE 7 e, f" y- Q8 P- @- U7 K+ U
Dim LngKeyD ( t( v  p& a: t( D( ~' Q3 G  n
Dim LngKeyN
+ Z6 n2 l: a# WDim StrMessage
1 [2 y/ f- c( N, m* d/ L6 KDim ObjRSA
+ ~) L/ H* O$ [- s9 A8 ~LngKeyE = "32823" # n& H2 Q) |  @" y9 @
LngKeyD = "20643" $ [" u+ v; ^% Y0 @* x6 \
LngKeyN = "29893"
/ K& i; Z' C. _) ?" GStrMessage = Message ; C, G3 z5 X2 |
Set ObjRSA = New clsRSA 5 l  R3 E' `! h& P
ObjRSA.PrivateKey =LngKeyD
  U2 X7 P  R, C! t" E/ YObjRSA.Modulus=LngKeyN
" B) g7 T/ e" f) m; p+ idecryptstr=ObjRSA.Decode(StrMessage)
, y/ B( m! g1 wSet ObjRSA = Nothing 4 P8 t- [/ |1 b% {' y0 h
end function # Z1 r2 V! b# C0 h# G! c& d1 w
%>
$ H* E. Z0 t6 K6 d8 D  P( w9 G===============================================' t" \% F* l; h6 h
! J, R0 k" \: o5 ?) n. c. G$ I% V
还有一个用于测试这段代码的test.asp
5 v" ~6 L' H7 I有兴趣的自己搭建个IIS测试下
+ ~2 z+ V5 c( v4 y8 T<!--#INCLUDE FILE="RSA.asp"--> 8 X6 y1 J% t& u) f8 m1 L2 H
<%( q7 ~) m: M" u
function Encryptstr(Message) $ o+ `: o8 f# o1 R" l
Dim LngKeyE
* y5 K; O% Y- y" V2 Y! g. t4 N- ~Dim LngKeyD
* v2 A& A" L& h( JDim LngKeyN
( S+ G' Y2 J# z1 X* SDim StrMessage
3 O( C0 v4 [) D/ }Dim ObjRSA
1 u8 w7 F1 Y% w7 oLngKeyE = "32823"
6 U( O; V( \9 m- r/ N7 E, ULngKeyD = "20643"
$ \1 T2 p. q! u' W6 iLngKeyN = "29893" 4 U4 Z4 e; T% M5 H
StrMessage = Message
  I5 J2 r: H/ n# C" [7 dSet ObjRSA = New clsRSA - M6 r! C1 I0 S# L6 R
ObjRSA.PublicKey = LngKeyE
6 K) t- i9 W2 WObjRSA.Modulus = LngKeyN
( ^2 q8 I6 d$ `" b/ AEncryptstr = ObjRSA.Encode(StrMessage) , p+ X2 ^" k' k8 z" z2 ~3 q
Set ObjRSA = Nothing 1 V9 ?' i! z$ T. H* Z* T
end function 7 t% E7 z4 i: |) _" t7 z" N& |5 ?, b
function decryptstr(Message)   J& g8 Y9 v1 f/ n  t  D9 u
Dim LngKeyE
/ n& j/ t7 q' n  XDim LngKeyD
7 v  q) _9 T5 x/ Y1 pDim LngKeyN
& O' B6 _- V" x9 d( k7 }+ w" M) qDim StrMessage 4 G( C; M+ w- H, a# j% a
Dim ObjRSA
( u, [# C2 r( D) W0 z0 h$ rLngKeyE = "32823" $ m9 e/ b6 d. v
LngKeyD = "20643" $ }3 W5 p' i; u7 g9 n' U* i9 ?
LngKeyN = "29893"
8 F9 N( V* y1 _: hStrMessage = Message 6 |$ n0 G  y5 Q8 c8 H
Set ObjRSA = New clsRSA 7 M2 T% A4 s0 X/ ^
ObjRSA.PrivateKey =LngKeyD
8 C9 S3 b. ^2 o$ d$ SObjRSA.Modulus=LngKeyN
. t9 r$ o( g9 ^8 O7 U( {; vdecryptstr=ObjRSA.Decode(StrMessage) 5 s0 E4 W! d) ?- j( n: y2 e, Y0 o
Set ObjRSA = Nothing . y* A2 D3 \4 J$ j1 y
end function / s: ~# a, X% H  o5 ]; Z. J
dim last,first
1 n! x8 t- f8 {" \first="!@#$%^&*()"
3 e+ ?+ k3 f* u+ a3 L- Y$ aResponse.Write "加密前为:"&first
9 ~; X3 |% Z" k! i9 slast=Encryptstr(first) : P! Y8 Z, m2 `" c/ u
Response.Write "加密后为"&last 5 ]$ |6 z4 d0 U6 ~  n
Response.Write "解密后为" &decryptstr(last) & k3 g8 P% v" C( v* Z
%> ==============================================
# R7 }4 S7 ]+ t剩下的就是字符的对照表了
% h' ~( X# E, o/ U0 }5 U6 s0 d===================字符集================
; K) ]3 d' j  D! h4 I' u0 T, O1_____6EBB3 U8 f0 u. C) \& _6 n
2_____5C1F- i5 ~5 Y( j: _8 B
3_____4D75
9 A) e) @/ @) [$ K: A: i4_____26CC
, e0 ^/ Z& ?9 i8 T" A5_____4F88
# C% y) j! }( l3 N; [6_____3F4E* d1 k# a4 f0 I; W
7_____0A9D
( H2 {$ F5 l1 L% f8_____1A1C+ G" I/ `) ?- V
9_____6D20
5 I$ F/ M: a# Q! `7 O6 P- u  B0_____1089$ n0 R& J9 E4 e1 @$ f7 g
a_____0F3E
5 |9 o" F5 H3 e1 P! N- z! pb_____3159) u# L# E: |/ W) `; g
c_____3517. n. C8 J" V5 P7 E& K8 K2 ~9 F9 z
d_____419C) V, w9 H/ A) ?; s. M7 {9 D
e_____615C
! [5 u: `$ X4 u7 A4 W  k6 N* `/ ?f_____556F5 d/ n2 Y, u2 [/ A
g_____2B7F8 L$ H4 ^1 B% l- v6 b/ R
h_____0F9C
5 X# q3 {& i( Mi_____00FA
: O& N3 t# k' {+ n+ L8 @% Yj_____5A50
9 }+ w/ m9 h: [  @; L2 _8 Uk_____2850& c2 e: l, P1 g+ `0 l
l_____3E7B$ H( X+ I+ u& `* v, ?& M. z# u
m_____71C5
) b1 G" Z. p/ R3 b& E: y3 r& v3 b( Rn_____1FC8
* D, F* G, D- j( ^, q7 ko_____74C1
3 z3 E& @0 F8 ~p_____5FB8
& o' p. K  o" T# Y  T& ]6 e6 m9 wq_____6085, O4 @, e, l. ~& Q/ `
r_____3AC4
( s0 K  ^, _+ A1 vs_____2F50
, W, `$ k5 d: N' p5 ft_____36F8
* Y1 E, n, ?3 F* Z+ pu_____7010
# a, e/ Y5 g: O1 ~+ Jv_____0B428 e( `7 O9 r" r, f. V5 L
w_____1C7A' j) [# R) X0 |4 b! p
x_____16F8, ^" l# {$ o& t
y_____2EE76 v% g8 a; T! D5 i) M
z_____5CF38 X3 R+ p$ b$ }, W& R+ q
!_____6233
; j9 E# i' x) n) r* Y@_____3A45
% r: |. s+ [  \#_____2291) F8 U* L: i3 l0 T( z
$_____5D5C
4 k9 h* }. V1 J5 \! i%_____09B9
0 p: U5 Y4 O5 R) M( ^1 j! l' b7 `^_____43EA8 z( P1 i8 k" U4 i' L" T
&_____62B9
5 u5 r  t9 j$ R  \2 }*_____63018 I: x* n4 R$ u  e. H: E5 }1 j6 ~
(_____4659* Z, s' K. W$ O% Q
)_____5C82
希望做站长本人的学生请点击
http://www.3ast.com/viewthread.php?tid=13841
QQ790653916只负责SEO以及收费教学等方面联系,他人勿扰

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

收藏了。。。。。。。。

TOP

返回列表