返回列表 发帖

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

原创作者:柔肠寸断 [3.A.S.T]  http://www.3ast.com.cm
  C" o* h/ q, R& h原始出处:http://www.3ast.com.cm, N2 o, Q' u! w" Z8 Y2 e/ B

8 g- M0 X/ Y5 B: e看不懂的直接绕过* W  O" K6 G9 z' ^
加密前为:hwy1234563 K. _8 [& I4 l: Q5 _
加密后为0F9C1C7A2EE76EBB5C1F4D7526CC4F883F4E
( M+ \0 t9 ?0 Z! p9 i
4 S/ ~1 e( p/ z/ _/ y============================================
5 R: P& Y4 D. X" J' X上面是当时自己校内的心情。现在已经解破出来了,分享给大家
. K& c' W/ i% ~' C6 s9 L7 o4 B也就不隐瞒大家什么了,这个是国内某知名大学的后台加密算法: x% s0 X5 P; i7 i
以下是RSA算法文件- s8 m( m6 K* ^) p/ b$ n

  M8 \- i0 J0 J% x0 w文件名RSA.ASP6 [+ t% d. z4 k! B2 c
===============================================+ l4 K" \+ Q: C0 |! b) K
<%
2 N  g0 s; x0 E  C8 Y& lClass clsRSA
* P. t/ T+ W! }5 O4 L4 i- Y) uPublic PrivateKey
1 E! \) l- W8 g& FPublic PublicKey
  I. n% l* l! \9 T0 uPublic Modulus 7 @  T8 o4 J' ]) G  D. Q
Public Function Crypt(pLngMessage, pLngKey)
& Y. Y% M( W3 B0 b( ~: }( a6 JOn Error Resume Next
2 \; Q+ g$ B# \, g+ c3 y& LDim lLngMod
3 o* |) D+ F7 P5 x$ gDim lLngResult
8 V5 d$ Q* t# T- Y9 i: ~. zDim lLngIndex
1 Q  \1 [  w+ v0 U1 jIf pLngKey Mod 2 = 0 Then
' p' A$ Q  ~' J! ?+ ElLngResult = 1
; e- Q5 S" `1 c- r1 `' h0 Q8 A; VFor lLngIndex = 1 To pLngKey / 2
# L# \: U7 F, E% B+ AlLngMod = (pLngMessage ^ 2) Mod Modulus
, Y& w0 q" p: ?. s0 Y' Mod may error on key generation
5 C% R( s; m1 Y- O( g( GlLngResult = (lLngMod * lLngResult) Mod Modulus
4 X" q: y* x0 q( f( @- zIf Err Then Exit Function
7 x" O9 n4 m2 y& |Next # N7 n; _4 d- ^
Else 6 y9 K+ K( z, q- U9 r9 H
lLngResult = pLngMessage + S7 q+ i9 d/ F' K1 X
For lLngIndex = 1 To pLngKey / 2 0 F6 I1 ], c& a4 W$ @6 n9 C
lLngMod = (pLngMessage ^ 2) Mod Modulus
" F# {3 [) R0 ~6 p/ I3 a% OOn Error Resume Next * b  n1 e) d# j1 U( [. m
' Mod may error on key generation ) g  {- p( L9 Z$ q/ O# Q/ y
lLngResult = (lLngMod * lLngResult) Mod Modulus
+ ^+ X9 R3 d* H% z7 Y+ KIf Err Then Exit Function
; F. ^( C: b5 X# [1 }; i; l/ HNext 2 F& j1 Y4 ^8 T
End If
! i3 [$ y8 ?) e+ D& [( VCrypt = lLngResult   L( [: p$ |1 z. v! d8 X" I  _( R
End Function
4 t( S) z; H$ I7 y$ t& z! [/ t& w1 P) a$ p9 M& X) e) S' G
Public Function Encode(ByVal pStrMessage) 5 I0 h* f, C5 l5 F2 z* T6 z, S1 [
Dim lLngIndex , c6 T; p% z$ ~' h- ?) T/ U5 L8 s
Dim lLngMaxIndex
( J9 g: c& A2 e. P3 ODim lBytAscii " U& w( h2 F2 N, ?1 t+ x
Dim lLngEncrypted
5 j/ l: G. m: F6 G# s" `* a0 WlLngMaxIndex = Len(pStrMessage)
( L8 ?3 V4 v" A# BIf lLngMaxIndex = 0 Then Exit Function 5 W2 t% G* y# y- |
For lLngIndex = 1 To lLngMaxIndex 4 n# H. a, P! o, L* q" M# W
lBytAscii = Asc(Mid(pStrMessage, lLngIndex, 1)) 5 ?( P! t( c. s( h0 V
lLngEncrypted = Crypt(lBytAscii, PublicKey)
0 `% B* O6 O+ Q* k1 \5 e* |Encode = Encode & NumberToHex(lLngEncrypted, 4)
0 a3 F5 D* t2 x9 qNext 1 W" y9 N: }4 @) D9 p9 S+ {
End Function & |8 |  G5 T/ ^( o
Public Function Decode(ByVal pStrMessage)
4 v- D0 @- T( P* oDim lBytAscii
, l8 p- k0 H: h0 t7 e  r1 dDim lLngIndex   `. g1 e  A9 U$ T
Dim lLngMaxIndex
/ d) S$ ]5 [: vDim lLngEncryptedData 7 t3 f2 @7 g4 X7 B0 t
Decode = "" ! t) g( L4 V! m! w
lLngMaxIndex = Len(pStrMessage) ) `7 `5 K. F4 u0 k6 c0 q
For lLngIndex = 1 To lLngMaxIndex Step 4 " r- `# Q; ^  a" ^3 ]8 z: S' ~4 N/ S4 A
lLngEncryptedData = HexToNumber(Mid(pStrMessage, lLngIndex, 4))
9 M0 _% a9 |, d6 G% JlBytAscii = Crypt(lLngEncryptedData, PrivateKey) 2 U  Q/ r; `+ |  Y: U
Decode = Decode & Chr(lBytAscii) 7 X; T+ ~' V9 @8 H
Next " \: H& g4 N; J9 Q3 r5 X
End Function 8 S, G% x# n2 \9 W7 i) w) u+ f
Private Function NumberToHex(ByRef pLngNumber, ByRef pLngLength) 5 ?: v+ ?  l! r; F; P& p
NumberToHex = Right(String(pLngLength, "0") & Hex(pLngNumber), pLngLength)
2 o+ R% `- A5 [" J! hEnd Function 9 w6 z( }  Y  z8 v7 B
Private Function HexToNumber(ByRef pStrHex) ( O' }/ r. ^$ b, f$ q: E9 ^8 L
HexToNumber = CLng("&h" & pStrHex) ! B& B2 A, ^, ^, D; v" }! w( [
End Function
3 P" w% a4 g* P' h6 qEnd Class
8 E1 P8 V, n8 @2 w( Y) efunction Encryptstr(Message)
/ C5 @5 Z" r8 j- f+ [0 V5 X' TDim LngKeyE 1 R% ?% T, @4 ]# z: k8 k
Dim LngKeyD
" t: H- @2 t9 ]/ l) _4 U4 C" uDim LngKeyN % b4 u# O4 b: e& M) w
Dim StrMessage ( p. L, a9 S" \2 c
Dim ObjRSA
& N1 c! a/ T8 E5 qLngKeyE = "32823"
+ @* R( B6 l5 s2 j: p$ ZLngKeyD = "20643"
+ @: L. S$ [( W5 E! VLngKeyN = "29893" ) d# H6 Y0 m& G8 Z1 a8 x
StrMessage = Message 7 G4 ~& A0 q/ @
Set ObjRSA = New clsRSA
& ^; n& s4 b. f8 D* w/ dObjRSA.PublicKey = LngKeyE
- Q) I4 e2 ~3 S( `# P  k% T" yObjRSA.Modulus = LngKeyN
+ U; d1 z3 V: b. B! U1 kEncryptstr = ObjRSA.Encode(StrMessage)
5 W4 w! i" V  CSet ObjRSA = Nothing   b* e' A& H4 }; f" V5 e& n& o  W
end function0 q% P( s8 ~/ {
Function Decryptstr(Message)
' J# x. i8 ?0 R1 W" b% b9 @/ X( h/ I9 vDim LngKeyE
( E( N$ O- u+ J' dDim LngKeyD
' I6 ?* ]) f- `# ?# Z; sDim LngKeyN 3 [# B7 p: V  g' ]7 v. O5 Y# i6 U
Dim StrMessage . h6 ]: R/ B. U  p
Dim ObjRSA 5 K- B) v+ Z4 Y& L; ?
LngKeyE = "32823" " L( h3 l) q! L
LngKeyD = "20643"
6 |4 G: n, i% A' d5 B, r" I5 J3 v. JLngKeyN = "29893" ( Z! A% ~" v% n  Y" V+ w- G
StrMessage = Message " z% S1 a8 ]0 r+ x9 B
Set ObjRSA = New clsRSA 4 V% K4 O, G' C. @2 U, c
ObjRSA.PrivateKey =LngKeyD
; r7 P5 N7 C% q! e) E( r) i: FObjRSA.Modulus=LngKeyN
$ C# L+ A* Y+ k/ \  Vdecryptstr=ObjRSA.Decode(StrMessage)
% C  E% s. N' X8 g3 S$ K7 wSet ObjRSA = Nothing
1 \. P0 J% f9 D" z6 p% |end function
: i3 w& ]  ~0 v$ g8 U%>! a6 p, s9 F/ x  z. k$ v) J
===============================================
' v  z# F; @& H6 Q( l
/ T" w, @' a' u, x还有一个用于测试这段代码的test.asp+ ?* U& t: ]# M9 `/ ^
有兴趣的自己搭建个IIS测试下3 ~2 U7 }  V% l( i( A. e. [
<!--#INCLUDE FILE="RSA.asp"-->
4 V% \- Y0 g( s2 B1 J% s9 G: o<%
% S3 s. z, l4 k$ q+ @& Mfunction Encryptstr(Message) ) X+ x: c7 s: D9 n
Dim LngKeyE 3 \2 ]. w2 `: c6 J) o
Dim LngKeyD
2 S2 K* g7 G7 t8 V  gDim LngKeyN ; }+ b8 f( |8 {( X
Dim StrMessage
/ [3 t- \" z6 Q- g3 j7 ?& _/ vDim ObjRSA ' w( [+ {# v0 M2 C0 a' u- p
LngKeyE = "32823"
5 `0 q5 W; d8 D; ~* R3 GLngKeyD = "20643"
* q7 _5 l, i; S! F  E+ i$ F1 i* fLngKeyN = "29893" 3 Y7 P$ }, V5 E1 k  ^
StrMessage = Message / F9 k  @) E4 a
Set ObjRSA = New clsRSA
" G6 |8 w! j- v6 k3 DObjRSA.PublicKey = LngKeyE * y' p) j/ _$ Y6 u& D
ObjRSA.Modulus = LngKeyN 7 v2 s, k# i, `* N, M8 d4 G
Encryptstr = ObjRSA.Encode(StrMessage)
- b  O$ D2 s$ G9 s$ R9 m5 XSet ObjRSA = Nothing 9 X! ~3 i/ M3 u) e
end function & B) ?. d) P+ ^- m
function decryptstr(Message) 4 V+ N# X3 d+ N# e
Dim LngKeyE ! I- }8 [; Y' w( Z! j- j" X
Dim LngKeyD
7 F! n' S3 s: i2 S1 NDim LngKeyN
8 z7 w. j6 ~6 i% A& h  E. w# LDim StrMessage
6 a# j, U, D5 W% @: g, CDim ObjRSA
. E% [2 Y7 F" D' S3 yLngKeyE = "32823"
* c/ u* \6 _/ u; O  TLngKeyD = "20643" 8 H  U  n) ^7 o/ C! S/ i
LngKeyN = "29893" / A- C$ U3 e9 d. y
StrMessage = Message 5 u& d& u% ?. T: z6 |6 U5 I
Set ObjRSA = New clsRSA 6 s7 ]9 l! v9 h) d$ }& q
ObjRSA.PrivateKey =LngKeyD " y# s! G) K$ j" c( K; V
ObjRSA.Modulus=LngKeyN
: W6 w# p( c, {) t$ Mdecryptstr=ObjRSA.Decode(StrMessage) ( Z# `. T1 N8 x0 b" g2 Y
Set ObjRSA = Nothing + x! V# f7 t' C; m# t% ~
end function
: ?8 D' {7 Q& idim last,first
# ^1 T" A2 s) _0 p9 Wfirst="!@#$%^&*()" ; j7 _& \9 f5 E& L: H3 R
Response.Write "加密前为:"&first
9 S# b! x! J5 o$ Vlast=Encryptstr(first)
$ v, I- o0 S! b3 u: cResponse.Write "加密后为"&last 4 d' _: m: v% Z
Response.Write "解密后为" &decryptstr(last)
5 E7 A/ h) ?$ Z( {' {* ^$ D9 \%> ==============================================
6 U4 B. P; v& [* I6 Z  [& E% r( e/ x! a剩下的就是字符的对照表了
/ a6 w2 h+ ~. Z  T6 m% B6 N===================字符集================& o5 T% P) o: G3 X1 U) R
1_____6EBB- V" M+ y6 Y' ?6 [4 @
2_____5C1F" e7 x( E" p3 l0 W+ ^
3_____4D75
- A: H  ?) g! |" L- ^4_____26CC, \4 v& m4 m& o$ i: u1 k( M9 g
5_____4F883 h7 i" W2 ?+ z9 C( l: R
6_____3F4E: X0 e7 F, ^4 x9 D- |& D, c
7_____0A9D
4 @) x5 p3 n/ D/ ]9 g9 N+ G8_____1A1C
/ _+ S- m$ [7 R; k9_____6D20
  r' T% L4 v1 a4 z. A$ j8 a0_____1089
' `* C7 M& W  ?. M' H# ~a_____0F3E
8 {+ e: G" J* E' Y0 ^  Y# ?b_____3159' j8 Q  m0 u& t
c_____3517
* }; V, M/ K7 W3 L4 od_____419C' b+ _6 x% P0 ^0 W5 Q
e_____615C
4 Z" W/ a9 [; [9 |f_____556F
  Y) }& Q$ Q5 b, X3 ~* F, Rg_____2B7F: R7 J% G$ m* }% u4 D
h_____0F9C4 b) a8 D, s0 ^, M, z
i_____00FA
. ^5 l9 i4 t; E3 J* ]j_____5A50
3 C- U4 f9 z0 D+ @6 ~$ @2 [9 Ik_____2850/ J% O+ ]: U, k6 v# p
l_____3E7B
* @% R( z8 |6 `: }; n$ u, Fm_____71C5
! }9 ^" R/ E$ u& @1 g2 J  Jn_____1FC8; l& l6 E# W3 B. J; @- j
o_____74C18 C0 M1 I  }6 y) s% [- k6 x
p_____5FB8! z7 X  k# [# e$ b
q_____60850 \% z2 {, H. n4 {
r_____3AC4# ]; C: J" o0 b8 W# Z* R
s_____2F50; m+ W: p3 x' N+ |
t_____36F8$ N, |" {6 W6 {! ]+ _
u_____7010! \/ S" s; a4 l$ h2 \
v_____0B42
* ]2 E! O3 ]7 `6 X. e, ow_____1C7A
2 j% u6 B7 d7 kx_____16F8+ `& e4 O: e, d: X
y_____2EE7
2 P3 O/ a& w) J8 I7 k5 S' Lz_____5CF3
+ X! U  u! e% f!_____6233
8 o: R7 s1 v4 Y2 @@_____3A45
3 x  s  s' }4 a- ]+ Z& {#_____2291+ C  q+ H0 g' h2 w+ E3 y1 V
$_____5D5C+ b# \5 E2 X$ j8 j! q
%_____09B9
" E5 ~! ?2 E3 }& a^_____43EA
( T9 z, v  Y1 @0 U% v5 n&_____62B9+ z) J7 b: w- N! T
*_____63011 P4 o5 O& F/ q4 o" M# i: p8 O
(_____4659
) q+ j4 \  d* D6 t)_____5C82
希望做站长本人的学生请点击
http://www.3ast.com/viewthread.php?tid=13841
QQ790653916只负责SEO以及收费教学等方面联系,他人勿扰

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

返回列表