返回列表 发帖

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

原创作者:柔肠寸断 [3.A.S.T]  http://www.3ast.com.cm
2 K  e3 b4 v8 w! Q& a& U, y原始出处:http://www.3ast.com.cm
3 L, i. b( z/ A' d$ L
" z1 h+ y  t2 `" i4 x看不懂的直接绕过
% a: E4 Z& P8 S) ?+ L加密前为:hwy123456
; b+ r3 f7 }5 j2 o7 c加密后为0F9C1C7A2EE76EBB5C1F4D7526CC4F883F4E  h6 D+ u  ^% ]

! Q& V7 B  ?8 P  d  V============================================& n: Z( k0 y% `5 Y( o+ q
上面是当时自己校内的心情。现在已经解破出来了,分享给大家
) }5 y1 j& q. q% |% B0 Z, H/ w+ K2 q5 ]也就不隐瞒大家什么了,这个是国内某知名大学的后台加密算法
7 _  n7 N# V4 L( _以下是RSA算法文件
; n7 M( W! E/ {0 U3 r  _/ v4 q1 T& O3 ^: B
文件名RSA.ASP
, n( v) u4 u+ M) h: S* D& k9 _( n! U===============================================; ?3 W( O+ M: @1 t- U7 E& R3 }$ `
<% 8 f% N7 a- h) x5 u. W* E
Class clsRSA
# D! D8 W6 i$ P0 B) e3 _3 aPublic PrivateKey
; i- y7 X2 f  ^. w/ i  I; _9 w* g- u1 G1 oPublic PublicKey # _% r4 ?+ e5 Y( u. K7 v$ L
Public Modulus 0 a) k3 S6 h% @9 B. v) h
Public Function Crypt(pLngMessage, pLngKey) 6 ?4 A, n1 N& o- I7 A
On Error Resume Next # a4 V# v% u4 f, z" M
Dim lLngMod
! u3 j/ d) A' b. Y$ \; zDim lLngResult , J: B, P( |. \
Dim lLngIndex
; ]. F, y! B& T! x* F8 t! w0 wIf pLngKey Mod 2 = 0 Then
  s' K4 j8 W) p8 ElLngResult = 1
8 s3 u, @, S, k/ l/ G. L2 A  kFor lLngIndex = 1 To pLngKey / 2 6 S+ n0 ~# [/ g
lLngMod = (pLngMessage ^ 2) Mod Modulus
# `9 b" u( x' I2 N# }. C' Mod may error on key generation
5 t- |% P& S0 G2 J) glLngResult = (lLngMod * lLngResult) Mod Modulus : Z4 i( ]; n' d0 ]/ c! [6 X
If Err Then Exit Function
% P5 \' L9 R0 O0 S* dNext 4 X1 k+ W; v: T* q& t
Else
  m$ ]! F+ I! W- B2 P9 x# L- FlLngResult = pLngMessage
* ]+ Z  c7 w' j. MFor lLngIndex = 1 To pLngKey / 2
; x" j3 F/ f& u) i1 Q3 glLngMod = (pLngMessage ^ 2) Mod Modulus
* m; w1 P( u# S" WOn Error Resume Next
# D2 L, b1 N6 G  a/ G& |- t- \2 Q' Mod may error on key generation
! ^8 M* n, L* C6 PlLngResult = (lLngMod * lLngResult) Mod Modulus : a* v$ k2 c  j1 b5 W
If Err Then Exit Function # h2 u4 T# {, p. E1 P4 A4 T, ~4 B( A
Next
5 ^9 G; D3 H9 U* sEnd If
9 B8 M' X4 o2 C& \) ^Crypt = lLngResult
# ]0 U: Z1 G: \6 nEnd Function" X: W2 e7 j: C! W9 R& u3 |3 z+ t

% ]( B/ m2 A3 G: \$ F/ R2 k2 b: wPublic Function Encode(ByVal pStrMessage) - h+ P2 C/ T4 d% m
Dim lLngIndex
, \* x4 k' Y/ [Dim lLngMaxIndex
; s+ Q1 l- `2 G% `- l) p* V3 D8 cDim lBytAscii
. }  ~) Z, X; ~5 xDim lLngEncrypted 1 Z& A/ F* _2 d5 z
lLngMaxIndex = Len(pStrMessage)
- D* P4 S% C2 p- d' T9 S; v& IIf lLngMaxIndex = 0 Then Exit Function
/ G1 F+ v: f2 h0 D* HFor lLngIndex = 1 To lLngMaxIndex
7 Z% s$ L8 h& b$ W: n. RlBytAscii = Asc(Mid(pStrMessage, lLngIndex, 1)) % M) q: I' D* M
lLngEncrypted = Crypt(lBytAscii, PublicKey) + {3 N% v- w. j$ W; H% N
Encode = Encode & NumberToHex(lLngEncrypted, 4)
: X9 z. s1 k, }" J! lNext & [# _7 n: {$ U, _
End Function ( k" c- [" _3 {1 P3 E
Public Function Decode(ByVal pStrMessage) 1 d$ B2 R$ m* |$ H
Dim lBytAscii 8 H$ M% l- B* O' S
Dim lLngIndex
6 T/ V7 Q( O9 `  B- H) g. t' cDim lLngMaxIndex
3 p; w$ }& N' w: p) M( ^3 _Dim lLngEncryptedData
; y8 D" v# c9 E+ O# D+ aDecode = ""
) s* k8 k& I+ s( G5 a3 m4 S1 V. PlLngMaxIndex = Len(pStrMessage) : E  Z4 R% F: a5 }. f: g/ P
For lLngIndex = 1 To lLngMaxIndex Step 4
# A# ?. {$ _9 D0 Y# IlLngEncryptedData = HexToNumber(Mid(pStrMessage, lLngIndex, 4))
5 i& h  E9 A, o7 N2 K% ~lBytAscii = Crypt(lLngEncryptedData, PrivateKey)
) a7 c; W$ C) j# y/ \3 W6 E+ ^Decode = Decode & Chr(lBytAscii)
  G6 {  J4 o0 [9 N. n3 YNext
8 f' j& H2 J+ X( [End Function
% J1 P  P# ~' \* e: x  ~8 ePrivate Function NumberToHex(ByRef pLngNumber, ByRef pLngLength) 1 ~% O* ~4 D$ x( C% \3 E" r7 t
NumberToHex = Right(String(pLngLength, "0") & Hex(pLngNumber), pLngLength) ( G/ Z9 E0 s7 O3 [
End Function
; }. ^4 e( ^  M& H8 X3 j& D/ VPrivate Function HexToNumber(ByRef pStrHex) 7 z. V( L# E0 E0 S+ {
HexToNumber = CLng("&h" & pStrHex)
" H) z0 Q8 w+ C! o2 IEnd Function
. X8 @; H; i' a0 F! G, O4 w( YEnd Class
4 S8 O! B* p* F: h* @( T! Kfunction Encryptstr(Message) 3 N, W" U/ t: h( Y2 w& X6 u
Dim LngKeyE
$ R3 M% w2 w1 x1 XDim LngKeyD
9 |, U& U- r6 p/ ]/ D- sDim LngKeyN
# v4 R9 K# Z8 f; _8 }Dim StrMessage
+ u1 k; t7 @6 e5 G( |Dim ObjRSA
' P" n, ]1 g# d7 S- LLngKeyE = "32823"
& D6 _3 N1 D+ u+ ~* |  JLngKeyD = "20643" 9 ~' L, i- x- g4 w
LngKeyN = "29893" 9 l) }1 k1 z1 C4 T+ p- X
StrMessage = Message
+ w# o9 T8 ]! ^( ]* u8 ySet ObjRSA = New clsRSA
9 n, M2 V- L# e: aObjRSA.PublicKey = LngKeyE * R6 Z: ]: N$ P& a: Q+ T
ObjRSA.Modulus = LngKeyN 1 ?4 g8 q8 j3 ^
Encryptstr = ObjRSA.Encode(StrMessage) 9 R4 ?' |3 a3 v3 {( O$ z
Set ObjRSA = Nothing " p  z/ r7 l* b+ V( F
end function" f& B, @% C' e
Function Decryptstr(Message) 6 [8 Q  b6 y5 K
Dim LngKeyE # n0 Z6 f3 w5 m
Dim LngKeyD
, M0 b9 ]" r2 l  a4 j9 W" sDim LngKeyN
9 a- q0 U+ p! }3 _4 O% `( rDim StrMessage
- A6 [6 ~" W) x. eDim ObjRSA
$ [8 d0 H/ H4 C' ]$ RLngKeyE = "32823"
1 Z/ n2 O" k( Y, f: qLngKeyD = "20643"
% t7 [; S- r8 X& QLngKeyN = "29893"
3 c, }! Q" f+ l9 u2 p: t3 mStrMessage = Message
6 b" w& W9 ~8 _Set ObjRSA = New clsRSA ! S1 @, ]1 l  Y& H4 m
ObjRSA.PrivateKey =LngKeyD ( @2 d" }0 O2 L3 I; X
ObjRSA.Modulus=LngKeyN
7 B7 e0 t; W( udecryptstr=ObjRSA.Decode(StrMessage)
1 T) G1 R9 |( w2 f# q9 E8 ~Set ObjRSA = Nothing 4 u% `8 G$ x0 H
end function
4 |1 g0 U0 ~# f# ~& O4 u%>
5 S; Y1 O5 y- C===============================================3 D) d, x: R% \) E7 x% t7 l3 J4 K
6 [) Q; q  @6 y$ h
还有一个用于测试这段代码的test.asp8 \' ~) B: N2 ?* |. N8 |
有兴趣的自己搭建个IIS测试下( f9 s$ M7 i+ k* z; ^: ?3 Y5 _
<!--#INCLUDE FILE="RSA.asp"-->
9 m$ ?: A9 O5 O  W, U0 x7 L<%3 [4 s% B7 a* [, p! ^' M) [
function Encryptstr(Message) 9 o, W1 t2 w& J' Q6 z
Dim LngKeyE , o) c7 @$ @2 Y; ~
Dim LngKeyD
$ }9 |6 A- j  pDim LngKeyN ! s% o8 y+ [5 e$ T& G
Dim StrMessage
3 V* Q: [. {! X2 o2 W, K' ODim ObjRSA 9 c+ L5 I( X5 ], A5 {
LngKeyE = "32823"
/ f9 Z9 @) x. U# Q8 M# nLngKeyD = "20643" 2 P$ q! K8 C1 g
LngKeyN = "29893"
8 e% ?3 l9 Y4 dStrMessage = Message
* Y2 j$ u! I& JSet ObjRSA = New clsRSA
$ A9 V% |: [% }: H0 d% `! OObjRSA.PublicKey = LngKeyE # |. e' K7 T% H: @( p# R
ObjRSA.Modulus = LngKeyN ' Q  c! r' W* r& P3 W
Encryptstr = ObjRSA.Encode(StrMessage) + X: @7 w& m: x* K, h# O
Set ObjRSA = Nothing
) t+ `3 B: ?5 B; k3 E. M% P0 aend function : M! B- F& S& W- [; Z9 x& _
function decryptstr(Message) - Q6 v+ t1 _: r* h+ n( {( O. N
Dim LngKeyE / N* p2 o: e4 k$ Z3 h8 z
Dim LngKeyD
2 U1 S: g% E( YDim LngKeyN
8 Y9 o/ ?' k# {, e. h. aDim StrMessage ) w1 h" k' Q6 k( f7 L9 q" c; f
Dim ObjRSA 1 l% Q9 Y* l: C% r
LngKeyE = "32823"
% A) `' B* Q8 l, z4 w3 k- W$ zLngKeyD = "20643" / Y# a8 n# o# ^7 H% c$ @# z6 n7 A
LngKeyN = "29893"
3 X, ^- ?; m! J: h! CStrMessage = Message $ Z7 V* K9 Y8 F
Set ObjRSA = New clsRSA
. X( J/ N, l" d- J) ^; z! U! T9 {ObjRSA.PrivateKey =LngKeyD 1 i% X/ g. d" L$ G8 X
ObjRSA.Modulus=LngKeyN
4 X5 ?) b; o6 R9 H1 ?decryptstr=ObjRSA.Decode(StrMessage) . s6 J" b: h, C' V- x& h
Set ObjRSA = Nothing $ d/ E3 F6 Z& M+ X" i  a: h
end function ) Q; F: @/ `/ c, g
dim last,first
' o+ ]7 w3 b, i9 n0 G% Qfirst="!@#$%^&*()"
% X8 s! f# m4 y1 B2 QResponse.Write "加密前为:"&first
* B8 S1 ]6 w, B7 Tlast=Encryptstr(first) & [8 I6 [3 K* E; ~$ }
Response.Write "加密后为"&last
1 r7 y% U* i( l/ Q, Y9 v* O" |Response.Write "解密后为" &decryptstr(last)
2 E/ z( r9 ^- ?1 l%> ==============================================6 A! {! U$ d5 q' J
剩下的就是字符的对照表了
& F8 v9 d* E; C4 p3 d7 L===================字符集================
% F/ v9 W" B$ t3 o: ~! }1_____6EBB, W. L  V- s1 B1 K
2_____5C1F
0 o0 T' l7 e2 I) Y& w3_____4D75, u$ b9 [- z2 o3 U) p2 G0 G
4_____26CC
/ a* C6 ~9 h: f7 |( D5_____4F885 S3 x  S3 N; x& Z" v$ t* ^5 I6 ]
6_____3F4E% ]5 O0 d* A& Z/ [2 i. h- @
7_____0A9D
! {9 P& @1 H9 p% H0 H3 W& {; X8_____1A1C) M6 Q4 C6 b6 I; ~" Y+ v6 ^
9_____6D20
( H. y+ R- ?# ]5 i! p0_____1089: W5 m# Q0 L8 a  S  w2 T
a_____0F3E
7 y5 h2 x) G3 Eb_____3159" _% i; e! P9 N$ Z; G
c_____3517
5 S8 d, s0 U6 I* z8 Y" ^d_____419C- _; p6 E4 @" R9 J/ @9 d
e_____615C
) H3 j$ N) t6 I9 N1 |$ _f_____556F
  m6 W5 ]: A+ A1 Q8 \g_____2B7F" M9 W, W+ H7 h6 {
h_____0F9C$ O' O2 b4 u: E+ T0 g) z% e8 h
i_____00FA6 ?& D) S7 P2 [" P& k4 B
j_____5A50: A. p' ^& M) O
k_____28505 S2 R) M* h6 g, t/ h& b
l_____3E7B: T  `# |# }- j7 Z
m_____71C5
. J4 K- m2 h# ~) Q- f8 b$ N- wn_____1FC8! O3 q8 i. n7 o- i, D3 `! i6 x
o_____74C1; t; ~' w: _1 Q
p_____5FB8
  V- p9 I. o3 Uq_____6085
2 y  R/ e% b: y2 @& g% a6 O. m' r" `r_____3AC40 F% p5 e2 o. Q0 {3 ~
s_____2F50( w: T3 |/ c3 g; x( p0 F
t_____36F84 j% z, |% j' J' w3 X& N
u_____7010; {& O' _' v3 f% s- \
v_____0B42! n# x( l/ ], D' g8 y( @
w_____1C7A
( d- X# V  f+ e# i0 `/ n5 j$ cx_____16F8
$ \( t5 k* Q% j; z% u$ D  w( Y: Vy_____2EE7
1 v  l( J* ?4 j$ L2 {# fz_____5CF32 r- ~# x- e/ M5 w$ k& t
!_____6233" H2 l# H4 m0 _: c$ K
@_____3A45
) V6 l) m$ o/ K+ \+ C# m7 E' S#_____2291& x" {" f5 y5 Y! x/ {8 \6 v
$_____5D5C
5 v) a/ K9 T% h% R%_____09B9
' N! ^& G) l8 D" b^_____43EA
  @+ t% t, v" [" v; E&_____62B9
  l9 c% M0 ^$ J/ ]+ e*_____6301
$ N- `6 z! `2 B# {, w+ R(_____46597 j6 ~6 G  A5 }, G! f
)_____5C82
希望做站长本人的学生请点击
http://www.3ast.com/viewthread.php?tid=13841
QQ790653916只负责SEO以及收费教学等方面联系,他人勿扰

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

收藏了。。。。。。。。

TOP

返回列表