返回列表 发帖

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

原创作者:柔肠寸断 [3.A.S.T]  http://www.3ast.com.cm
* ]; \" c5 j  D0 L原始出处:http://www.3ast.com.cm; @8 Y$ D" A5 c9 P& I, _
5 A* f' q; ^6 A! h( i' m% M/ ~8 v4 g
看不懂的直接绕过5 T" p/ D0 j9 L6 K
加密前为:hwy1234566 ?! f7 ?( O  Z8 l: y
加密后为0F9C1C7A2EE76EBB5C1F4D7526CC4F883F4E
, S( X# _3 d, Z4 L$ I  C$ t2 l# R' J
============================================. D6 M+ u$ v# I% h; Q/ g  O3 _
上面是当时自己校内的心情。现在已经解破出来了,分享给大家
$ U/ D- ^( @( R8 w% n3 w/ I4 s也就不隐瞒大家什么了,这个是国内某知名大学的后台加密算法
$ Q7 s5 E' y4 e9 Z; |( z# f$ j' ?以下是RSA算法文件
& z6 Q: V" }# G2 B% U  ]) o  e( \4 d7 R
文件名RSA.ASP
4 H) k9 K  ~2 G( H% g) |4 b# v- V===============================================- n+ K" }6 l2 `' R0 }/ B& Z
<% 3 c5 g% W5 U3 a" u6 e
Class clsRSA : T3 o' F( P" o% F4 y, k6 Q" @
Public PrivateKey
2 g- o- T3 ?  U: N, hPublic PublicKey " d, \( z) Q% o
Public Modulus 4 d6 _/ t8 s" p4 [% K3 _: z
Public Function Crypt(pLngMessage, pLngKey) $ w5 w) U5 C3 M$ R* T! y2 O: ^% u
On Error Resume Next
- c/ K5 @7 \& _* N9 S: P& ?" wDim lLngMod
8 A! m" B  [0 o% q& ZDim lLngResult ! I- H9 ]! z6 S2 s* J& z/ u& C
Dim lLngIndex
* u/ L' B3 K5 |5 ~( I" o0 v! U9 KIf pLngKey Mod 2 = 0 Then $ y5 E1 m; w/ Z4 w  m
lLngResult = 1 2 b: x) k( s9 D* _" ~; V/ k
For lLngIndex = 1 To pLngKey / 2 4 u9 c$ C, m9 K# m8 t. L# f
lLngMod = (pLngMessage ^ 2) Mod Modulus 0 o6 E9 k- P9 j7 ~7 L# R
' Mod may error on key generation 5 q7 N% A: j6 N, w4 D3 P
lLngResult = (lLngMod * lLngResult) Mod Modulus 1 h" m, Z' X, S7 y, M3 x/ ^. D" @
If Err Then Exit Function ' R) @; v/ z2 W! b1 Y: a' x9 \. x% S
Next
& u$ y, [6 ~( d# b6 d9 k$ ^Else
" l: z) e( [3 GlLngResult = pLngMessage   |! _+ j) e& G! _( R8 J7 c
For lLngIndex = 1 To pLngKey / 2 8 [/ O0 {3 S0 e$ ]
lLngMod = (pLngMessage ^ 2) Mod Modulus
- u8 ]# x- f* IOn Error Resume Next
8 M2 I* s& l5 u* _; F' Mod may error on key generation 5 q9 H3 g& D" J, |" x
lLngResult = (lLngMod * lLngResult) Mod Modulus " z" ^1 m6 `5 L% {: P* s
If Err Then Exit Function
: b: W, A8 b( f' DNext ; a& j" p0 x. [  o$ A9 h) q8 V
End If
2 Q+ g+ d7 I4 X% f( ^7 ICrypt = lLngResult & a/ G, }3 P* N0 q" e
End Function
' K( w' ~. l# |$ o8 s6 A1 H+ |: r+ _. y9 G, b" i1 o' ]: w
Public Function Encode(ByVal pStrMessage) ) g4 N' V1 d  j6 f8 H
Dim lLngIndex
6 o+ q0 o1 T# \6 |Dim lLngMaxIndex
6 i( a& r/ j# B1 E! S2 ^4 `Dim lBytAscii / I, P+ t8 f# ^; s0 L4 Z
Dim lLngEncrypted
6 p+ I& B4 W! IlLngMaxIndex = Len(pStrMessage) & k& O& i$ I) d; P, m" L9 p
If lLngMaxIndex = 0 Then Exit Function # ^) f- s1 |1 ^
For lLngIndex = 1 To lLngMaxIndex ' a* T, H( ?: O4 s, @8 {
lBytAscii = Asc(Mid(pStrMessage, lLngIndex, 1))
8 z4 W0 @; U/ R; u' z9 w+ d9 J  \* nlLngEncrypted = Crypt(lBytAscii, PublicKey)
* Z; V8 j1 F% q% Y) I  a: G4 ?Encode = Encode & NumberToHex(lLngEncrypted, 4) # f# q. u& _. h
Next . U- g) r* J2 ^- [0 D
End Function $ O% Y/ Y& ^, l% ^; z, G2 W- i8 _
Public Function Decode(ByVal pStrMessage) 1 H5 m: Z9 e/ A2 h' I6 Z! }- d- d. n
Dim lBytAscii
  M) R4 l3 d- K$ ]. A: q; x( GDim lLngIndex ; B% P: }; [: f$ c4 I
Dim lLngMaxIndex
8 G7 f6 m3 |3 G! @. v1 ODim lLngEncryptedData   ~8 G1 ]$ |0 g$ v
Decode = ""
9 s% ~6 O: T8 @( t0 Y! [3 n' n' IlLngMaxIndex = Len(pStrMessage) ) b' B- @+ `2 J$ x7 @0 n* g& O
For lLngIndex = 1 To lLngMaxIndex Step 4 ) p2 u4 @2 P8 T8 ^5 ]  V
lLngEncryptedData = HexToNumber(Mid(pStrMessage, lLngIndex, 4))
9 {# I; l$ S; c; d6 \4 Y. IlBytAscii = Crypt(lLngEncryptedData, PrivateKey)
# m4 u! b* e4 Y- ODecode = Decode & Chr(lBytAscii)
3 ?1 y; n  i) c. KNext
" _% w" E: t3 cEnd Function
+ J7 n$ k0 ]" l% ?Private Function NumberToHex(ByRef pLngNumber, ByRef pLngLength)
3 }! g; L) ^( E% j- g: GNumberToHex = Right(String(pLngLength, "0") & Hex(pLngNumber), pLngLength) , \. B! x. r, K& k6 t! f; L% p
End Function
6 @! Z( ?' t! WPrivate Function HexToNumber(ByRef pStrHex) 6 b8 d: B2 a# j8 z' H5 d4 Q8 I
HexToNumber = CLng("&h" & pStrHex)
* H+ U- q1 j3 E) q; H; ~End Function - k6 ~4 g* f" w  T% d
End Class ! J) s$ a4 c8 `2 V
function Encryptstr(Message) 7 f6 k) X% D( c, z7 j
Dim LngKeyE $ s! M- c2 L" ?- F) a9 t* `7 x
Dim LngKeyD 1 {6 v& G7 L- M0 {. r. Q  m$ {& S
Dim LngKeyN
: y7 b9 g9 Z) U2 g# pDim StrMessage
0 N% @' `8 q2 G: U+ e; GDim ObjRSA
1 T/ M( f+ X" |' T. v: jLngKeyE = "32823" * @& V+ ]& v% U* L% |  o4 d
LngKeyD = "20643" , ^! q7 y: d# n0 y) W
LngKeyN = "29893"
8 R: ?( ]7 Z9 s. O' V( v$ q; {StrMessage = Message
6 _7 j3 h" d$ T9 lSet ObjRSA = New clsRSA
) A: N1 u; P$ H* @  CObjRSA.PublicKey = LngKeyE
( `5 G* y2 F9 r! G% RObjRSA.Modulus = LngKeyN 2 v0 \* s4 _; J
Encryptstr = ObjRSA.Encode(StrMessage) : L: c( e$ n; n; o5 o5 n/ [: F
Set ObjRSA = Nothing
4 `2 Z. ?  I6 }  S! Rend function
; Q0 W$ I& M# j7 PFunction Decryptstr(Message)
: r" v6 q8 X% l" V$ {" ]Dim LngKeyE ) S; k9 t' Z8 K0 O% `
Dim LngKeyD
5 ~% G5 ]4 D% C  o" S( E: F$ JDim LngKeyN
9 d! K9 G' v" j4 s6 d1 PDim StrMessage % V' x2 ?- m8 J! }% u
Dim ObjRSA 2 h7 |% x9 i3 R* t1 R+ V
LngKeyE = "32823" # J) q) V* M, E0 h+ A) ~
LngKeyD = "20643" " I1 i5 K2 X( A3 H" N5 V/ f
LngKeyN = "29893" + l7 c2 x- k( f+ }' j' Y3 q
StrMessage = Message * B; Q* ]1 N  X
Set ObjRSA = New clsRSA
8 K1 }, R& ~% T. gObjRSA.PrivateKey =LngKeyD
2 Z6 L4 }" {0 h: O  z3 s0 FObjRSA.Modulus=LngKeyN $ h' h! E, d5 h6 a1 x- y( F3 ]! E
decryptstr=ObjRSA.Decode(StrMessage)
2 m' Q" G# \5 C6 o6 L+ h6 g0 tSet ObjRSA = Nothing
+ a$ G2 Q" c1 n" wend function 9 a3 M# f5 M: g8 h/ p, c5 P
%>2 I) q- I8 r' f6 r) P. Y$ S
===============================================' V, N8 Q7 p3 x
  z/ ?1 @7 J3 K
还有一个用于测试这段代码的test.asp7 d* |9 U4 c: Y  d& `/ Y( U% X
有兴趣的自己搭建个IIS测试下
# |7 F4 W! i2 [6 v' [. y. o<!--#INCLUDE FILE="RSA.asp"-->
% P, m4 ~, p7 l) y. a<%/ n* ^6 ^+ y! }) h& y9 f# [0 t
function Encryptstr(Message)
$ N, G2 V; |% @% t  j! ODim LngKeyE - s% }% K( q1 N  y7 x
Dim LngKeyD
" X) p  h  t  B( t. `& D* Z; h6 cDim LngKeyN
+ q, _/ X8 }5 V, _. n$ FDim StrMessage 0 F9 i2 O9 F  y) V; ?& d
Dim ObjRSA . r3 j9 v* a1 |, C0 m
LngKeyE = "32823" 4 O! a5 K1 O9 F( n  v! W
LngKeyD = "20643"
1 K( f4 K& [6 j0 a7 T' ~$ Y( lLngKeyN = "29893" $ F5 Z/ J  [( _+ ?" c
StrMessage = Message 4 n+ z. e; E4 m3 ~/ @4 ]
Set ObjRSA = New clsRSA
$ b2 y9 A5 N7 Y; o5 dObjRSA.PublicKey = LngKeyE 1 `* H1 }; |; m  C
ObjRSA.Modulus = LngKeyN
7 I& X+ K/ c3 [( @9 sEncryptstr = ObjRSA.Encode(StrMessage) / M  d, x4 l/ ~9 `5 Y/ O2 I
Set ObjRSA = Nothing
% F: E2 m0 U  J8 @/ |# [3 R+ iend function
, p3 p3 d% ~4 p' O9 g( F7 [3 G  N! Xfunction decryptstr(Message)
1 Z$ ]: F6 n  y% kDim LngKeyE " V. d9 h9 Z8 ], Y" c, X5 g
Dim LngKeyD
* s" L1 o5 [! iDim LngKeyN $ f% {: s/ s. X+ U: f% A7 Y
Dim StrMessage
; g: ~/ Q, c% o! BDim ObjRSA   r. a# t3 q/ t% y1 c. Y" P
LngKeyE = "32823" 9 \2 ^, ^$ [! m  d- \
LngKeyD = "20643" ; T/ `' k# H+ p( E$ J! }, }
LngKeyN = "29893"
* A# c, Y$ w0 g3 u, pStrMessage = Message . Z7 M8 M3 T0 L/ t1 X8 s
Set ObjRSA = New clsRSA
- q8 l4 j% r- m( \( z; hObjRSA.PrivateKey =LngKeyD
/ M& D1 [" X1 c3 @. R- t' FObjRSA.Modulus=LngKeyN - {; N5 m9 r' {0 Z8 ]. d
decryptstr=ObjRSA.Decode(StrMessage) % _  i; k% p# Y5 W8 @3 U
Set ObjRSA = Nothing
9 K( {6 g" O5 ~end function % ?% Z- x/ ^# Q: ]0 p9 _/ Z8 y
dim last,first
/ S" G) ~7 ]: Gfirst="!@#$%^&*()" 7 l1 y; Y& ]" _' \9 R5 E1 E3 x& B/ w
Response.Write "加密前为:"&first ' k8 }0 y) h' X; N: N( ^9 B6 ]4 ?
last=Encryptstr(first)
# U+ @1 v7 O3 f9 M! Q) ~Response.Write "加密后为"&last
% n) F0 N" w3 @9 ^6 O/ Q& N/ L+ ~2 QResponse.Write "解密后为" &decryptstr(last)
: {  b0 e% Q$ S* g1 v%> ==============================================9 N+ X% ~5 z# l1 Y3 E3 P
剩下的就是字符的对照表了
1 S7 n4 T' Y; ~7 C; I: U===================字符集================
$ T9 y. J0 M) W  o# S1_____6EBB* m& `; ]" ]- c, ^' \) G
2_____5C1F
9 H  s* J. A5 F+ }3_____4D75  v9 |4 c: P, ]# x/ n
4_____26CC9 t& w( }# W9 q3 R3 o- L" S# @" S
5_____4F88
, G3 K/ u4 g( K0 y4 A% {6_____3F4E
- v. C3 u2 X7 `/ S: E7_____0A9D
2 i) w, f7 T$ B7 j- ]0 l0 @; J8_____1A1C- K& _' [$ P( M$ r6 R. V
9_____6D204 @7 A' n8 |+ u) u
0_____1089; }2 b& |; x* y/ n! H, z$ [
a_____0F3E
" ?, T2 F6 q' K4 c" W3 D: s- Vb_____3159/ T0 |! l- [6 J5 r0 x! f: y
c_____3517
% B4 n! ]8 l' ^5 H0 @% ?d_____419C
4 Y8 F; h: f; {* _# b& z0 ye_____615C
; x/ z) \& f  cf_____556F; p5 c" n/ I, j* y4 l
g_____2B7F% o; p: p! W4 x: @, M$ g
h_____0F9C
0 E- P+ C  l% R5 L% g3 q5 m4 Ri_____00FA# k( e$ l, x7 Q8 ]4 `2 g. ^8 |0 L
j_____5A50
! W0 e0 m/ P6 |+ |; ^5 i* gk_____2850$ m4 F# ]5 J- A0 m  t
l_____3E7B$ _) B2 \' r8 H5 R2 Q* p& ?  ?
m_____71C5
4 ]/ c2 w, ]0 a& a6 g% y6 Hn_____1FC8( ]( z1 v2 L- i5 o* t: ~
o_____74C18 @! l% G+ s* [- F( ^) \$ u6 W; b
p_____5FB8& \, N( n* R* l! t& L* m- Z# a
q_____6085. l, v0 a, c  j/ F$ l6 G9 `( v
r_____3AC4
# J! y! q7 i* j$ I$ @s_____2F50/ o  _3 _2 N8 R
t_____36F8
- c3 U  B2 g0 R2 S# s0 m+ ]u_____7010
5 ?' d8 i2 V( L& g( j# tv_____0B42
6 X. Q1 @% [! C# y: J4 lw_____1C7A
4 o, D: _% |' [% bx_____16F8( A" K, U( Y+ k9 E+ S# h: H, s' ^/ A
y_____2EE7
0 {7 G0 c: ~4 [3 vz_____5CF3
1 w0 T( z$ T9 M!_____6233% S8 S! {" g7 v+ T. q
@_____3A45
, S+ E8 [0 k2 \/ ]+ B#_____2291! j3 n: X! S& ^: u4 l0 |3 b3 {
$_____5D5C$ [& s  t* h$ H5 F
%_____09B9' ^1 B: a0 P' U
^_____43EA: B+ b. O8 u- b  e. j
&_____62B9
# E9 d, b# `& b- V; K9 r# V*_____6301
# k6 x# i1 c  E* O) H% Z6 E(_____4659: x/ w0 k6 B" Z2 U7 D( a
)_____5C82
希望做站长本人的学生请点击
http://www.3ast.com/viewthread.php?tid=13841
QQ790653916只负责SEO以及收费教学等方面联系,他人勿扰

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

收藏了。。。。。。。。

TOP

返回列表