返回列表 发帖

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

原创作者:柔肠寸断 [3.A.S.T]  http://www.3ast.com.cm1 @1 }8 p  e4 s$ z7 h
原始出处:http://www.3ast.com.cm
& e% F  e/ y+ k% B' T  ^
  T2 l: G9 N. r看不懂的直接绕过+ b7 }. O; t. o5 a2 D
加密前为:hwy123456$ O9 `/ J1 J/ [4 c5 [3 [: k% o
加密后为0F9C1C7A2EE76EBB5C1F4D7526CC4F883F4E' O' L: V/ s; b) \& K* R6 R$ Y

& \( n, ?  ^6 d8 W7 }============================================$ ^7 q& j9 m1 p
上面是当时自己校内的心情。现在已经解破出来了,分享给大家  V! x) x3 `5 I
也就不隐瞒大家什么了,这个是国内某知名大学的后台加密算法; J% o- [% O$ N2 g( ~! f
以下是RSA算法文件' t: w( f$ d2 ], I9 P/ `
3 S1 c" M3 f2 n# O7 Q4 ~
文件名RSA.ASP
  O2 c; X- J1 A- \===============================================( p$ G4 S+ |' W: Z
<%
6 P- l* D: U/ v  TClass clsRSA
" u) ?! j) E) }1 W/ z0 k$ dPublic PrivateKey
3 J2 @8 O2 e7 @/ \Public PublicKey
1 o" Z2 k1 h& T1 q4 d8 bPublic Modulus & ~& s3 F& w# f
Public Function Crypt(pLngMessage, pLngKey)
/ _2 }; I1 M5 K4 c1 u' GOn Error Resume Next
1 D- O5 r7 [2 H* X5 xDim lLngMod
2 y* N  |% v$ m# \Dim lLngResult , B; ?- }9 W2 X& s2 B
Dim lLngIndex 9 H/ p* R) u) M; n% q  \0 w
If pLngKey Mod 2 = 0 Then
, ]' i+ @/ h: r' ?lLngResult = 1 ' Z9 z. X$ U  a& g
For lLngIndex = 1 To pLngKey / 2 + j9 ]+ ?4 u* Y
lLngMod = (pLngMessage ^ 2) Mod Modulus
2 N3 A* g+ ]: f8 y- k' Mod may error on key generation
$ q. B& M! O( KlLngResult = (lLngMod * lLngResult) Mod Modulus 2 q1 b: Z5 {+ H
If Err Then Exit Function
/ g5 v9 _  I# W: W7 b9 D: t0 zNext
8 ?0 z# R) g5 Z7 gElse 8 I) A3 J4 K  L, J
lLngResult = pLngMessage # n' g& p2 z1 Q& r, k
For lLngIndex = 1 To pLngKey / 2
; e) ]" p. {, S# x8 j+ l& q1 p& |lLngMod = (pLngMessage ^ 2) Mod Modulus 7 p( {( v7 {, u3 R
On Error Resume Next 0 t: F# H6 r. o/ W; B  x
' Mod may error on key generation " P4 U! ^- A/ s- I
lLngResult = (lLngMod * lLngResult) Mod Modulus
0 e+ _, h# k6 y! {6 R9 {If Err Then Exit Function % L" O2 Z) J9 ~" ]7 R% k9 f5 v
Next 5 V. z- }3 J# q. p+ T, f  j
End If ( w; `$ c7 f) m
Crypt = lLngResult ! M& u" y5 a, ^, n0 o
End Function
+ {0 y7 {& ^6 u& o0 M( R4 o1 q
$ U& _6 F2 J- o5 m# h9 ZPublic Function Encode(ByVal pStrMessage) 3 K* [- x2 U- a& Z
Dim lLngIndex
# _& {  @/ F0 x1 L) |- D/ ^Dim lLngMaxIndex 4 I9 h# \% C* W0 p0 v, \' y( G
Dim lBytAscii . I' h5 g0 p' ^0 x9 ?
Dim lLngEncrypted 9 j( n% n3 G0 v  V
lLngMaxIndex = Len(pStrMessage) # Z7 Y2 b7 a; f% [1 u) D
If lLngMaxIndex = 0 Then Exit Function
  g3 p" h; y9 s6 l, h% B" oFor lLngIndex = 1 To lLngMaxIndex
2 l) K, t! {( h( Q( J3 }' WlBytAscii = Asc(Mid(pStrMessage, lLngIndex, 1))
/ T% a! [  c7 E& U6 S% g, WlLngEncrypted = Crypt(lBytAscii, PublicKey)
' c2 U5 M, L" p( BEncode = Encode & NumberToHex(lLngEncrypted, 4)
% j) c/ S/ p  z9 FNext
7 B, ^7 i8 ~; W0 I0 |0 h7 TEnd Function
  g, N# @5 O" |& q, N& w+ F& ^6 OPublic Function Decode(ByVal pStrMessage)
) G" f& M- C. g+ e+ pDim lBytAscii ; T( j; `5 e+ Q% |1 v
Dim lLngIndex 7 l. p0 m- o! i2 j
Dim lLngMaxIndex & m; ~8 [+ }/ I! d3 A* }8 q
Dim lLngEncryptedData
6 D5 _+ F) F  f: m8 d1 S! oDecode = "" ( X7 U7 j3 s# r( B& m
lLngMaxIndex = Len(pStrMessage) : C: x$ v% Z5 g
For lLngIndex = 1 To lLngMaxIndex Step 4
9 J0 a9 m$ a! G/ zlLngEncryptedData = HexToNumber(Mid(pStrMessage, lLngIndex, 4))
) q/ R, Z0 P3 g& zlBytAscii = Crypt(lLngEncryptedData, PrivateKey) . N; |/ X/ H- y# z8 m  A
Decode = Decode & Chr(lBytAscii) ; T" y8 _9 |+ S# y/ Q! x
Next " `; v8 ]% c# `: _8 j0 J5 i
End Function
. e/ `7 d/ Y3 F9 |2 T& g( s0 _Private Function NumberToHex(ByRef pLngNumber, ByRef pLngLength)
: ?1 h7 \: i; j3 ]NumberToHex = Right(String(pLngLength, "0") & Hex(pLngNumber), pLngLength) ! t3 ?5 |% y, a7 h5 a
End Function ; z* _2 I$ v4 E
Private Function HexToNumber(ByRef pStrHex) . u8 X. I7 A8 Z9 T" W: v+ u  V
HexToNumber = CLng("&h" & pStrHex)
) D+ Z1 B8 J: y& MEnd Function
) N' }& @" H5 h0 I2 VEnd Class
( _- e# b, j, u0 w" lfunction Encryptstr(Message)
, T  x2 `6 a8 o. w, wDim LngKeyE 2 @, n, |7 B2 f$ ?
Dim LngKeyD
. ~  K( x5 m+ H; h# {) yDim LngKeyN 3 X) H2 c& b9 ^8 q6 m
Dim StrMessage * H% B6 M; H- q. q& b' m
Dim ObjRSA
) r! W/ t) o! D3 p3 C# h9 bLngKeyE = "32823" & }$ w+ @7 F2 V& J
LngKeyD = "20643"   f/ T- |( y1 k( E
LngKeyN = "29893"
5 m  Y$ |; N9 G  a- `StrMessage = Message
' O7 z6 y$ q3 FSet ObjRSA = New clsRSA . p; \$ ~: w. [9 J/ T2 w
ObjRSA.PublicKey = LngKeyE % `6 q$ l  F$ |* b% l
ObjRSA.Modulus = LngKeyN
- X4 |' y( Z, q3 i& c* wEncryptstr = ObjRSA.Encode(StrMessage) 1 f+ j- e+ o0 n
Set ObjRSA = Nothing
7 x6 {# I* N+ v% jend function
- j" O% a# h: XFunction Decryptstr(Message)
1 r5 C: J% l& {Dim LngKeyE
- ]9 i- H2 k  t/ g6 FDim LngKeyD
5 I* E& W% J$ D; A- m5 IDim LngKeyN $ @- [# ~3 Z# P# S% ~" C& S/ \) U
Dim StrMessage
$ C5 k: A: {% h1 K& f; ?/ lDim ObjRSA $ C! d  t1 t4 @! m
LngKeyE = "32823" 1 |, J- {  F8 C! C: [# @0 N
LngKeyD = "20643"
" _' K% N# N5 ~  C( YLngKeyN = "29893" * k; ~0 w$ Z* E8 _& K4 U& ?8 e. S
StrMessage = Message
5 M7 M/ y% K# q* w, ~# _" ?Set ObjRSA = New clsRSA
& I0 H1 G& N% X# A( MObjRSA.PrivateKey =LngKeyD 8 r. n0 J, f9 G, @1 S% ?; M
ObjRSA.Modulus=LngKeyN , ~! ~( ?8 i6 d/ z# c
decryptstr=ObjRSA.Decode(StrMessage) * R. O1 c+ E% {; Q1 g
Set ObjRSA = Nothing
' O( q0 z! g0 U5 s+ L5 ?end function
# g1 o: {9 k* c0 u%>
; ?% E- m) F* V% i/ ]( N===============================================& m: R; g; w1 O
  v; o5 R9 c* i
还有一个用于测试这段代码的test.asp7 h& b0 ?( l" Q$ l' f1 }6 `4 k& ~
有兴趣的自己搭建个IIS测试下
' q! z) t6 E/ v$ e<!--#INCLUDE FILE="RSA.asp"-->
% e0 `' l  I; h7 F) A6 M0 s<%4 |, H9 _  O0 {2 v/ N: S
function Encryptstr(Message) $ D/ ]% C. h8 J$ L9 q) I2 ]
Dim LngKeyE
( `6 U. q. e7 R# d0 a1 nDim LngKeyD
5 d! v2 B& ^" L9 w& f, W8 i3 N: [4 mDim LngKeyN / m; E; C( v. c& E* q* @3 V
Dim StrMessage ( [+ }2 j8 N/ J9 p  Q
Dim ObjRSA
3 H' h/ v: R& mLngKeyE = "32823" 2 k/ l8 _0 J7 g9 v4 ], I
LngKeyD = "20643" - G! R/ }0 U2 E! x5 g
LngKeyN = "29893" 9 a: K1 q+ b& a8 L% R8 H
StrMessage = Message
  T3 `& n% b. M( t! iSet ObjRSA = New clsRSA
+ |+ d  f9 I5 O( T: z2 OObjRSA.PublicKey = LngKeyE
( {9 K& ^' F! K3 o- LObjRSA.Modulus = LngKeyN / M3 x+ `) u1 x1 x7 r0 d( U
Encryptstr = ObjRSA.Encode(StrMessage)
9 [2 Y1 |4 H. X+ R/ s* @Set ObjRSA = Nothing
7 g, S, Y3 Z6 j) E$ A" e5 O$ jend function 8 J& Y3 c& k2 [3 L1 m# j& c
function decryptstr(Message) : R3 _- R2 t% L. k$ e
Dim LngKeyE
( v5 M2 X( w% w' u- Z$ Y0 gDim LngKeyD
5 |1 N$ V. |% r1 f  a2 V9 `/ h- EDim LngKeyN 1 Z# a$ X1 P( f: ?6 T) \
Dim StrMessage
  ~( M2 b2 p2 e. S+ FDim ObjRSA ; s' V! K; Z8 ?, }* l: }- @: C
LngKeyE = "32823" 1 t' t. v8 b' D0 K
LngKeyD = "20643" & \7 t# M2 R! _6 q1 Z, \& H: V
LngKeyN = "29893"
/ V( H; |' b0 X3 s( ~& sStrMessage = Message
2 L- m$ x) M" n' J5 \6 \( LSet ObjRSA = New clsRSA , U, s  Y2 P  s. k& C! w
ObjRSA.PrivateKey =LngKeyD 0 Z% N" x, `& V: x0 [$ q
ObjRSA.Modulus=LngKeyN
; v& @2 |# ~3 B. sdecryptstr=ObjRSA.Decode(StrMessage) * Z8 p6 p+ U" A( l( J) T$ [& a7 q3 D3 k
Set ObjRSA = Nothing 9 l$ b' G2 l  @" y+ k0 K2 N
end function 7 v2 ~$ n5 P* ]
dim last,first
$ X, b0 F% \4 w+ ?. E3 s& mfirst="!@#$%^&*()"
6 S7 w5 ~! D& }: DResponse.Write "加密前为:"&first
" v& O0 }7 ~. h: C6 p$ L+ Glast=Encryptstr(first)
: {2 I7 X% Z* A% l% B3 XResponse.Write "加密后为"&last 5 ~! E, W% N7 e( A
Response.Write "解密后为" &decryptstr(last) " j" L3 D# f. _% Y# f
%> ==============================================
! Y. S1 S9 z* K! D' x0 ]剩下的就是字符的对照表了
* U9 J8 r6 _( U% R; F1 b/ ~1 ~===================字符集================8 O( a+ u- h; v, @8 ?
1_____6EBB+ \' }% W* b) x3 @3 k+ K& q
2_____5C1F/ `$ r% u) E0 Z3 M( q) U* M8 B
3_____4D75& S/ d- j4 I2 M6 f$ Z' u- f
4_____26CC7 f/ s, A  F1 _' y
5_____4F88
8 S9 j( E* R4 _) [6_____3F4E
: l+ @1 n. n( u$ v6 k! W9 n7_____0A9D" `6 j' h, u( o% G5 w
8_____1A1C
% j& ]' q$ W; d2 K: }9_____6D20
/ b1 W+ H2 X- x9 p- y7 s( N. Z0_____1089
8 Z! U, i: X& D5 O9 \a_____0F3E1 E; t7 r& _/ b6 Q  _" G/ J# c7 @9 v. C. g
b_____31596 L, c& I! @3 u# C
c_____3517% i7 }: X. |& v/ p
d_____419C9 V( z9 b' f% h- x
e_____615C) T! t6 U$ J& c# D1 p/ E3 `
f_____556F2 z" h" `& k9 J/ X
g_____2B7F
/ n0 |/ o$ @% c5 c4 Wh_____0F9C
0 x6 b& O8 i$ U7 Y& }) M9 M- li_____00FA. w5 E, Y0 x, ^3 H$ r) v
j_____5A50, V* m; e, N7 _: {; G
k_____2850
8 {1 E. ^9 `) m  z8 J6 Rl_____3E7B  B$ K5 N5 a) r2 W7 j
m_____71C51 X- a! J; D7 T, C
n_____1FC8
. c$ b+ i( S4 K1 f% C1 |o_____74C1
$ r7 q+ K, b$ _/ n7 o: Xp_____5FB8
: `. j9 T6 G/ w3 ]4 e. V' `q_____6085
8 n2 _/ J; L+ r1 r/ ?/ A4 U0 mr_____3AC4
0 Q0 H  j3 d& W& H: L0 O0 o0 Ls_____2F500 _4 O) u5 X- ^3 O+ c3 M
t_____36F8. E2 R0 \  P- ~4 D$ X* Z
u_____7010
5 _; k+ {# |0 M( jv_____0B42" b# p0 W5 Z' g( ?
w_____1C7A
5 b% N+ h+ j$ e( A( J  y" T/ A5 Ux_____16F8: M/ |0 y4 I- F6 D/ U; X
y_____2EE75 t9 r4 _3 g6 u% a
z_____5CF3! o. C# o% r6 T  I! A' O) R
!_____62333 Y% z1 _  B) d1 j% h
@_____3A452 ^% u8 D/ W0 \
#_____22915 n0 Z3 D1 J& y8 @7 b! ]
$_____5D5C9 y4 I9 ~( I6 s. m' Y: N# c
%_____09B9
0 g! P. X' p5 G/ E' Y^_____43EA; N4 D* C) q" o+ v4 A7 r1 f: B8 I5 B
&_____62B9* j9 }+ ]: x/ i+ s
*_____6301+ N) _" p4 Y- L. |/ @
(_____46597 l% w" T# }1 E  ^' k$ S: R
)_____5C82
希望做站长本人的学生请点击
http://www.3ast.com/viewthread.php?tid=13841
QQ790653916只负责SEO以及收费教学等方面联系,他人勿扰

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

收藏了。。。。。。。。

TOP

返回列表