返回列表 发帖

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

原创作者:柔肠寸断 [3.A.S.T]  http://www.3ast.com.cm
; I  C- n' }5 p* o4 n9 i原始出处:http://www.3ast.com.cm% \) X" M9 V! y8 f: ]) v

; `; q. T1 D; j  N7 Y; f看不懂的直接绕过
4 z9 N2 J4 I: [0 O. H( Q加密前为:hwy123456
0 x1 d# y8 }5 ~加密后为0F9C1C7A2EE76EBB5C1F4D7526CC4F883F4E5 y$ D4 z* o* z  V

7 w2 o0 P4 p2 `) l4 Q& C============================================  ?, p+ \- y9 N
上面是当时自己校内的心情。现在已经解破出来了,分享给大家
# z7 p% n2 m6 r: s" X, a也就不隐瞒大家什么了,这个是国内某知名大学的后台加密算法
! b; \8 S( s0 Y. h6 G2 I" I( x以下是RSA算法文件3 ~8 s3 n6 Y( Q

& o2 b+ Y+ @- w文件名RSA.ASP8 p$ g  f* v: c% I2 K
===============================================
6 @( N6 ~: @9 b& c2 I<%
4 S; n4 q7 R& s1 c. G4 @Class clsRSA ' Q4 b3 a; d8 N, ?0 I
Public PrivateKey ; E  \/ j3 H. e8 I) v
Public PublicKey
9 u3 c" X# {1 ]+ iPublic Modulus
2 Y% ]/ A6 q5 m. J( nPublic Function Crypt(pLngMessage, pLngKey)
* Y. l$ q; e  N! f7 n+ i0 YOn Error Resume Next
. d. o4 o' a- T6 _Dim lLngMod ' H1 r3 [( m4 e6 Y0 D. m
Dim lLngResult   A* \  _, c7 k
Dim lLngIndex
$ E  K( N6 \4 n0 T' yIf pLngKey Mod 2 = 0 Then ( W+ R2 F) _/ v" j" ]
lLngResult = 1
  \) [" {8 \+ ]' l1 pFor lLngIndex = 1 To pLngKey / 2 - |5 J- a! ^& p% t0 `6 Z
lLngMod = (pLngMessage ^ 2) Mod Modulus 2 L! p; B4 S' I0 g9 _7 v4 i2 M
' Mod may error on key generation 6 t  v6 f" _* q0 g  I: b5 l
lLngResult = (lLngMod * lLngResult) Mod Modulus & F; c; `3 S1 B5 K8 {' T+ F1 o
If Err Then Exit Function , @9 K' U3 e0 W% b( ~
Next   I5 N, M# _: [' q3 S2 j
Else
* b  o6 F* I0 r; Z9 l8 y. WlLngResult = pLngMessage
3 q% |4 H: A! [1 e: z/ J( ~, PFor lLngIndex = 1 To pLngKey / 2 ' j0 C0 P& P7 p; o2 ?8 m
lLngMod = (pLngMessage ^ 2) Mod Modulus " ]: b* f' I% p! l
On Error Resume Next
2 W6 _4 S8 l9 [7 i4 V/ P3 h' Mod may error on key generation
& s4 V6 M3 x2 `/ ~; m$ HlLngResult = (lLngMod * lLngResult) Mod Modulus
5 g. M% ^+ i9 F! _If Err Then Exit Function   q7 Q; l+ X9 E5 w8 N, u$ q( [
Next
! `3 O4 `+ V" |( B& A% u4 uEnd If 0 h1 Z" q1 x$ K
Crypt = lLngResult
& Z3 L5 f# m4 q$ L9 d- ^, M; Z5 YEnd Function
. M* T! d: a; M& _+ T3 e3 A8 G# K5 C1 p
Public Function Encode(ByVal pStrMessage)
4 T. `) N' G) T8 SDim lLngIndex
; x: S. j8 n0 P2 X* _Dim lLngMaxIndex
, k$ V9 I% v3 h# dDim lBytAscii
  v" ~3 n' [+ ~% `3 K8 e3 TDim lLngEncrypted 7 h0 I5 ?" N& T6 z+ V( ^- [
lLngMaxIndex = Len(pStrMessage) ) _1 ~$ S0 U5 r* k, V9 _; e' w
If lLngMaxIndex = 0 Then Exit Function
! c+ |$ R3 D7 x8 m: xFor lLngIndex = 1 To lLngMaxIndex
  t1 _2 \0 j  {8 U  clBytAscii = Asc(Mid(pStrMessage, lLngIndex, 1)) : f) Z# ^; C! }  f% _
lLngEncrypted = Crypt(lBytAscii, PublicKey)
- L2 e: ^9 d% N3 p1 |- PEncode = Encode & NumberToHex(lLngEncrypted, 4)
/ C; X2 W; [0 H8 s  X7 QNext 2 ?0 }' |4 h7 i1 J: ^
End Function % _4 O, ~# n: A* A! ~
Public Function Decode(ByVal pStrMessage)
. b- y7 Z* l" ]5 _  nDim lBytAscii ; v$ Z6 |, F1 A5 ]$ \
Dim lLngIndex
. P; @! k: r% ^6 u8 ^Dim lLngMaxIndex
7 P  @0 O) c) p2 B5 WDim lLngEncryptedData
3 d% ^$ p% B* W0 ADecode = ""
) w! A2 g, k2 b; N0 t2 HlLngMaxIndex = Len(pStrMessage) 4 [% l& G: @7 @
For lLngIndex = 1 To lLngMaxIndex Step 4 ; R& Q* ]- K5 b5 V
lLngEncryptedData = HexToNumber(Mid(pStrMessage, lLngIndex, 4))
$ I0 {% G) O8 r+ f4 z( PlBytAscii = Crypt(lLngEncryptedData, PrivateKey)
5 J0 ]2 O$ q1 TDecode = Decode & Chr(lBytAscii) : b! W/ M9 C- l% H
Next
9 S  q& Q! ]  k1 t+ @End Function * M1 X, g+ p# i8 r9 U
Private Function NumberToHex(ByRef pLngNumber, ByRef pLngLength)
4 y# L/ G# j2 y0 t) t1 VNumberToHex = Right(String(pLngLength, "0") & Hex(pLngNumber), pLngLength)
  x" _3 _9 T2 _2 @End Function 9 B- u2 Q! A8 r1 H6 ~. V" c' [" \
Private Function HexToNumber(ByRef pStrHex)
4 _& W8 e5 L4 o$ A  u: k0 rHexToNumber = CLng("&h" & pStrHex) : C6 w. N  H* u0 Q5 B2 \, t
End Function ! f+ I! }- F4 m( f3 t
End Class
! M2 G* p( C6 r! q- g* Qfunction Encryptstr(Message) 6 N1 ~6 m5 t" J' @9 w+ P) {
Dim LngKeyE
+ S; k, U% l+ }8 ^Dim LngKeyD 5 A6 L9 u4 @$ w" c/ a4 c
Dim LngKeyN + J. i* j4 c5 I( x0 _
Dim StrMessage , ^1 N: _  h8 f$ c5 N; R+ Q. o& {6 Q
Dim ObjRSA
4 H3 P$ W& m, g  {/ ELngKeyE = "32823" 1 c' m8 d# B+ ?/ J+ C' b
LngKeyD = "20643" 2 I! `7 T' Q$ O
LngKeyN = "29893" % @' y9 u! M# a9 A3 _  k2 A
StrMessage = Message
: F( ]7 `; \# z8 n4 G5 Z4 T+ BSet ObjRSA = New clsRSA
* H8 y+ E# b$ yObjRSA.PublicKey = LngKeyE
( z+ Z' v3 j& i# HObjRSA.Modulus = LngKeyN , u9 j* y4 g8 _0 I& ?$ |1 X: O; u
Encryptstr = ObjRSA.Encode(StrMessage) * d9 [6 N5 C5 ]% ?: d6 M7 x
Set ObjRSA = Nothing " ?; [' R( w  S& c& `1 g
end function' `; s% V; S+ }$ E% O& F) o
Function Decryptstr(Message)
( {1 j% |! L# w. tDim LngKeyE
' b. p" R% X0 G. q3 u+ M. rDim LngKeyD
! e- }. Q6 q3 A& F$ C$ bDim LngKeyN
! e5 Y* {) i6 C0 |) ]) I2 ZDim StrMessage ! I7 j, p/ \. u% o# [! }
Dim ObjRSA ) b2 v5 ^3 P9 `4 m4 O5 X1 Z+ X' I
LngKeyE = "32823" - f: H7 J) {$ I! H& Q: X& o
LngKeyD = "20643"
. _+ }$ ]6 ^) f1 T3 r' z9 O3 {LngKeyN = "29893" " o1 T  N' A! K2 M5 {% O- Z
StrMessage = Message   z3 D* a2 K& O9 t& o
Set ObjRSA = New clsRSA
! F4 c9 N* G6 ^* a* f$ TObjRSA.PrivateKey =LngKeyD
: ^' y, E& f- M7 lObjRSA.Modulus=LngKeyN 0 K8 D- u3 y* F+ t6 {7 G' S
decryptstr=ObjRSA.Decode(StrMessage) * Z. Z1 A! v( q" ~8 F
Set ObjRSA = Nothing : B6 o  {$ {  N# w3 q! ~
end function $ ^6 s5 a6 p) P+ c! h
%>
. n; O* o; x  C5 {" o; b. _===============================================6 V; q& Q9 d3 P+ P* t
; R- V$ E) `% h# u* d% _( }: j
还有一个用于测试这段代码的test.asp
2 V; M$ N! \5 y  R; F有兴趣的自己搭建个IIS测试下) P) @8 T" [' j8 V7 V1 M
<!--#INCLUDE FILE="RSA.asp"--> 3 ~4 Y( r& i, D7 x: ~  ]
<%/ e/ }$ S3 x! ^1 T. G
function Encryptstr(Message)
: p; c7 S" A; G* HDim LngKeyE
" O: [4 U9 [, F6 {; K# `! GDim LngKeyD
  Z, n: K2 K9 }# D9 hDim LngKeyN
8 r# c  B1 c- ZDim StrMessage + G" A. I* A3 H9 J+ A/ O
Dim ObjRSA
9 @, j" t' l  zLngKeyE = "32823" * P/ U% S" M1 n3 }+ J
LngKeyD = "20643" 9 S$ D! B4 C2 G1 j
LngKeyN = "29893" - Q: A' ~! v' U7 T
StrMessage = Message   P: g2 q1 R$ y
Set ObjRSA = New clsRSA   O! X% N  e/ ?6 Q. D7 r6 {, k  F; h
ObjRSA.PublicKey = LngKeyE
$ U9 J7 y8 J8 D/ S' G1 P  uObjRSA.Modulus = LngKeyN
2 W4 P3 c( q* VEncryptstr = ObjRSA.Encode(StrMessage) , M) y, _0 s/ K# m( r# q
Set ObjRSA = Nothing - z3 G3 i9 D! Y3 ]; C: O, Z1 R
end function
+ o  w# C( B# v" p/ n: A' Gfunction decryptstr(Message)
, Q$ ~- _3 Q0 o" @: A3 q2 i8 BDim LngKeyE ; B( [: _5 M7 h2 P5 ]% V1 ^' g
Dim LngKeyD 1 Q4 h  I2 W( k8 }5 u0 q/ j
Dim LngKeyN
- F- T+ b) u1 vDim StrMessage 0 }- n& ]- T$ e* j5 h
Dim ObjRSA ( I0 u, w6 s& }1 U) S
LngKeyE = "32823"   @% ?, b, y! J3 D* q9 n7 F, j" @
LngKeyD = "20643"
& @/ L( `7 b. n8 k7 R: Z# bLngKeyN = "29893"
; x* l% R* L* ~6 L  rStrMessage = Message . n: j6 M$ t) v0 V
Set ObjRSA = New clsRSA   `% S+ h. i" k; G/ I  A/ l3 {
ObjRSA.PrivateKey =LngKeyD
+ f, H( R: I" O1 }& \1 l0 i" ZObjRSA.Modulus=LngKeyN , z% l) g) }, E7 o
decryptstr=ObjRSA.Decode(StrMessage)
  p7 W0 a6 O1 p! s5 Y& }1 vSet ObjRSA = Nothing & |# }/ Q) r" u# Q4 @9 g- o* `3 h
end function , q, Q! s6 |* M; Q. {/ \& K
dim last,first 9 ^/ D. h5 m1 }' d3 _
first="!@#$%^&*()" / T9 X( [, B4 Q1 @
Response.Write "加密前为:"&first " Q# _3 h, ~. a8 C. @
last=Encryptstr(first) . T& e( X8 T" C& r; T6 ]
Response.Write "加密后为"&last ; g$ ]* `& Q$ u8 y- f9 G
Response.Write "解密后为" &decryptstr(last) % B: U3 S+ P" g1 n6 {
%> ==============================================6 c9 C% G3 F" ?- P
剩下的就是字符的对照表了
! E  V# _7 M) \9 U( r===================字符集================/ W' D: Y2 p$ L$ n: v
1_____6EBB6 E4 S- S2 W: h# r" T2 _4 ^* m) O
2_____5C1F# O7 d$ m" X7 n. p5 S
3_____4D75
/ u' H; I% l& }4 m: s" U4_____26CC
" G- r" }- P9 }0 ^, h; r1 Z( _5_____4F88- i) z; O7 O) `2 d. m5 g  ]
6_____3F4E2 N& v' ^! @7 r: S* M4 _: `7 D& I
7_____0A9D0 \$ Y# B' o5 @( W- I# Z- s9 G
8_____1A1C
$ W$ ^) B% n* C9_____6D200 i8 U4 u+ [/ X
0_____1089
' _: l) b( V& t7 X# H' M. Ua_____0F3E/ s5 n- Z" w3 }- H, O( ?0 ]
b_____3159
) |9 ?* a2 s2 x5 Pc_____3517- \% `; z9 \+ c  [$ J6 O7 [
d_____419C  j8 i; `& e4 }3 G
e_____615C
, b. r# ?8 c& t! ff_____556F( h0 X" i7 w3 ?3 e+ y1 B2 U7 n
g_____2B7F6 j' F9 `3 `. ]6 R0 x) j
h_____0F9C
: N. W1 r# q0 N: X- ui_____00FA
4 h6 _& h5 {. v  h# ~$ y+ `0 G: f1 |j_____5A50+ D- C& z( j8 k9 ^
k_____2850
( f# ~% P& I6 X- Al_____3E7B
2 E9 c, w  W# D4 |2 ~- x6 V: im_____71C5! G: h, e4 j8 W- N0 n
n_____1FC80 B( B) n& d+ _" Y  N; ]
o_____74C1
5 ]; L' V$ `& O* T2 p6 Ap_____5FB8# J* ?/ s& J, S' H/ q) N6 k& l* f
q_____6085, A3 ]5 G4 Q( n% n
r_____3AC4+ U# T% \" ?7 p- N  @, m  P
s_____2F504 \8 o7 a  s) r
t_____36F8# L* H5 z# y$ `( P$ \
u_____7010) i+ I9 C) _& j
v_____0B42* {, o" ~  b3 g4 d3 B9 @& i
w_____1C7A
: r' p* L* z; d8 wx_____16F8  N* C. ^" v) N' K$ O# G$ j
y_____2EE7
# |1 S- L) U) Az_____5CF3% b+ d) d0 x" b
!_____62336 E5 V6 f  s" r5 k% n8 H: L% K4 l
@_____3A45
2 g" v- T% m: a6 o* C9 I; b4 j#_____2291
3 Q& r8 l( [& f, S$_____5D5C
$ R9 f7 s. ?7 W2 S3 ~; b%_____09B9/ ]* {8 e; j9 I9 ~! ]1 ?
^_____43EA# W0 n% j9 e- C9 N" K, P
&_____62B90 D' r% d/ C* X" l; E4 ~
*_____6301
; Y( K& x0 J/ W8 X" w(_____4659
1 w7 N1 F% f" \( c6 |* b)_____5C82
希望做站长本人的学生请点击
http://www.3ast.com/viewthread.php?tid=13841
QQ790653916只负责SEO以及收费教学等方面联系,他人勿扰

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

收藏了。。。。。。。。

TOP

返回列表