返回列表 发帖

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

原创作者:柔肠寸断 [3.A.S.T]  http://www.3ast.com.cm) |7 a8 j: b2 m
原始出处:http://www.3ast.com.cm
" \. B, X$ w- v' V, a4 U/ R- H& }9 u, r. }/ n
看不懂的直接绕过; h& o( T! J$ w( H
加密前为:hwy123456& {. ]' L0 r+ Z6 ~/ N2 q
加密后为0F9C1C7A2EE76EBB5C1F4D7526CC4F883F4E
5 u8 {* G7 N, M4 z" j! D* x, a: h
============================================
! y* k' ^" T8 Y6 t6 ~上面是当时自己校内的心情。现在已经解破出来了,分享给大家
# w9 S  Z  Q1 {" {; \% t5 G$ y( A也就不隐瞒大家什么了,这个是国内某知名大学的后台加密算法
& P5 k6 T9 Q% B2 Q" e: T. [, ]以下是RSA算法文件) l& E! w; N' t" ]9 u8 L

1 j$ V+ W: ]: ?/ q# Z文件名RSA.ASP+ F6 G. x' Z/ C. j* M$ v) u% u
===============================================1 O( |' O! T. O5 b9 G" z
<%
4 @1 Y9 b/ K. G3 `1 `6 `1 EClass clsRSA
4 U3 g4 a! X, Z+ ?+ @* IPublic PrivateKey 3 j; ^/ l& {1 l3 }% X
Public PublicKey
, Q" A6 V& L: M' fPublic Modulus
  i" G& n4 X2 W" n3 DPublic Function Crypt(pLngMessage, pLngKey)   Z9 d9 `6 g$ G8 C
On Error Resume Next # e% N$ z4 y+ `7 M' Z
Dim lLngMod 1 R& h3 N3 n  g
Dim lLngResult
9 m9 j/ _8 [& ]9 G4 I8 ZDim lLngIndex
4 x; }: z, c2 p1 G/ x3 C2 g2 JIf pLngKey Mod 2 = 0 Then
' a/ l+ }: p! i. qlLngResult = 1 4 j# p1 f% N7 k/ y
For lLngIndex = 1 To pLngKey / 2
/ I8 }) e4 y% B, e! s5 M9 ~lLngMod = (pLngMessage ^ 2) Mod Modulus
& y  v, p1 f/ F  i5 O  s' Mod may error on key generation
7 v1 {) R- T( _; D" VlLngResult = (lLngMod * lLngResult) Mod Modulus 3 P7 o. m" C$ m- J4 E8 s
If Err Then Exit Function & M- E. l, v$ c2 H& @6 N6 J0 B
Next 3 r; A, E4 h. T  Q3 J& _2 d' }! f
Else 1 Y: P" c5 m7 e6 H/ i
lLngResult = pLngMessage 5 }' X# _; a. m
For lLngIndex = 1 To pLngKey / 2
  m6 y+ {6 j, h: n+ U3 blLngMod = (pLngMessage ^ 2) Mod Modulus
, `* g1 ~) B2 G4 ?. v" N( eOn Error Resume Next
( g. H2 |: `: i- r3 B9 w) e' Mod may error on key generation . A' @8 A; ~! S9 F# A0 H
lLngResult = (lLngMod * lLngResult) Mod Modulus 6 j' L- H8 a8 ]  p# {% E# f
If Err Then Exit Function & }0 H1 P7 ]2 v4 N0 i
Next
+ ~0 m5 O& {8 E& L# S* @: aEnd If 2 O% \: C% T+ c8 n1 ]4 I5 X# g
Crypt = lLngResult ( I# o5 @, M, x9 I1 E1 @/ P
End Function( \8 D; ~) [1 Q" T
! i8 e4 q, E% ^6 C' S
Public Function Encode(ByVal pStrMessage)
1 r5 j! Z5 [. H  Y. q: jDim lLngIndex ' D- k. W- P/ o' n" ]
Dim lLngMaxIndex . w5 R. {. k; v% `2 q" P4 L
Dim lBytAscii 9 B7 D: b& R+ N4 X
Dim lLngEncrypted
% \9 n4 [! X1 G( ~7 ^lLngMaxIndex = Len(pStrMessage) 6 s3 {3 n* j* |2 N- Z: n
If lLngMaxIndex = 0 Then Exit Function : Y: [" }1 x. k3 W
For lLngIndex = 1 To lLngMaxIndex
/ K8 _  m! f, G0 n+ E* H, P2 vlBytAscii = Asc(Mid(pStrMessage, lLngIndex, 1)) & D2 h1 W/ \* n1 U  n5 n5 k8 |2 q
lLngEncrypted = Crypt(lBytAscii, PublicKey) 4 U% b  D. X2 f5 Q' n
Encode = Encode & NumberToHex(lLngEncrypted, 4)
, f, G4 \. e3 E8 b/ HNext % e: w1 H% M- ]
End Function
. N. g/ l, X" F  t: t- LPublic Function Decode(ByVal pStrMessage)
1 H' e" ~  p0 \0 J5 L# N+ DDim lBytAscii
( m; s: f' q1 [# F& m7 ]! o2 cDim lLngIndex 4 X6 a9 w9 I8 e* h" W/ K6 @( F
Dim lLngMaxIndex ' L( h6 Z$ s, z: z3 d" H
Dim lLngEncryptedData ; c3 E7 }' H4 w; y, j
Decode = ""
% D1 r5 K3 e4 Q$ l9 RlLngMaxIndex = Len(pStrMessage) 9 {& y$ u9 [$ b/ j3 |+ I6 D5 v
For lLngIndex = 1 To lLngMaxIndex Step 4
, e7 q0 F8 m; L& Z" rlLngEncryptedData = HexToNumber(Mid(pStrMessage, lLngIndex, 4))
/ f/ g8 Y4 a. n4 H9 Z0 k6 W$ IlBytAscii = Crypt(lLngEncryptedData, PrivateKey)   }- d1 B1 s) n3 w- A- @3 c
Decode = Decode & Chr(lBytAscii)
6 i. h" E9 [0 Z; V* a" {* uNext
7 ^# Z# Q" L6 U7 U+ R. a7 lEnd Function
( F, o+ t% {1 ^1 P* H7 qPrivate Function NumberToHex(ByRef pLngNumber, ByRef pLngLength) # D5 Y& s) D+ Q
NumberToHex = Right(String(pLngLength, "0") & Hex(pLngNumber), pLngLength)   Q0 G" u: Z. Z% ^0 ]; X
End Function
+ H" z8 g. |) ^8 OPrivate Function HexToNumber(ByRef pStrHex) ) }( U$ P: w0 B3 _
HexToNumber = CLng("&h" & pStrHex)
" k7 a. p4 a3 h6 R' L7 e' SEnd Function , n3 F6 I5 s2 A' _1 e" g3 q% J) ]
End Class ' g. D# P$ T7 I6 t
function Encryptstr(Message)
! D3 b  @8 z8 D/ x/ uDim LngKeyE . n' k, \/ A8 ]7 e1 a
Dim LngKeyD
$ J& T& [5 r. E) ]  {  SDim LngKeyN
+ {+ `3 W1 _4 wDim StrMessage
2 q2 ^4 M- y+ A+ k! d. A% GDim ObjRSA 6 P/ E+ `* i5 m3 A; S
LngKeyE = "32823"
6 {+ M" N- e# B$ H' }LngKeyD = "20643" , h4 X$ B( G1 o4 g
LngKeyN = "29893"
( Z' G: l' [5 d+ P6 c4 zStrMessage = Message 7 q! n8 @4 L/ U  ]) V+ k$ B" P
Set ObjRSA = New clsRSA
% d" K, V  V5 I+ q- _1 U/ JObjRSA.PublicKey = LngKeyE
* w6 ]1 f# C) v+ ^7 D( W  IObjRSA.Modulus = LngKeyN
/ T0 G8 T7 J$ I7 z- [  O/ dEncryptstr = ObjRSA.Encode(StrMessage) 3 y% F0 N+ G/ D: X
Set ObjRSA = Nothing
% y$ _8 c1 d2 T/ @9 M' Lend function
4 v; \/ u1 D( ]Function Decryptstr(Message) . k. h$ p5 \& u8 Y/ r# n8 \8 i5 H
Dim LngKeyE % h9 g; G. s1 p% M
Dim LngKeyD - `4 \( e: t. O# t- [5 J
Dim LngKeyN # D& L" u5 H, `
Dim StrMessage , b) H+ O8 T; _- a
Dim ObjRSA
% ~( Z; k1 X; j1 ALngKeyE = "32823"
7 d4 |' g/ {- c' HLngKeyD = "20643" 2 I7 K* s/ m. x6 O5 u8 X
LngKeyN = "29893" 9 @$ Q; Y1 Z- S
StrMessage = Message & O! i0 j* h; o. z
Set ObjRSA = New clsRSA
3 ?  u9 }; b* e! G& b, L' PObjRSA.PrivateKey =LngKeyD
% j  ?6 y, c9 v! tObjRSA.Modulus=LngKeyN / K6 p5 ^9 H# ~% G* T
decryptstr=ObjRSA.Decode(StrMessage)
9 P0 V5 t7 s' J( I! w; ~3 MSet ObjRSA = Nothing
+ A$ q+ V2 e4 ^end function
- c( V6 C1 g2 @. ?%>
6 u5 c: i& I1 a( R===============================================
" ]/ @8 L4 ?- Y7 H( t* L+ [" B7 Z5 ]4 }
还有一个用于测试这段代码的test.asp
  N( b$ C  d3 \8 b有兴趣的自己搭建个IIS测试下' Y/ D) V3 P* Y! H2 r3 r
<!--#INCLUDE FILE="RSA.asp"--> . `/ h3 ]" ~! `0 E8 o# L6 m
<%0 g& p* y& s2 E
function Encryptstr(Message)
7 O) }3 k* G6 D; `! [; z1 yDim LngKeyE
9 D. J) k7 l! m' U- C& xDim LngKeyD
5 v' l  o' |5 IDim LngKeyN % X+ d: x  x/ n0 l4 p; a6 }
Dim StrMessage   U" }2 |" h0 u" s+ t4 R9 W. E
Dim ObjRSA 7 w1 Y6 w/ _& d( |
LngKeyE = "32823"
0 G3 f- q$ Y: F% ?: R, JLngKeyD = "20643" # q* j5 Q! P/ ~/ n2 Y
LngKeyN = "29893"
, W. G& s. P0 X1 xStrMessage = Message . B/ [5 _3 a  Y& {' g" @( t; z5 r
Set ObjRSA = New clsRSA 1 W- \, U, @& h% {
ObjRSA.PublicKey = LngKeyE $ S# U; S' k8 K. ^: t3 H
ObjRSA.Modulus = LngKeyN
6 |# e5 P/ n5 d( |5 q$ y' fEncryptstr = ObjRSA.Encode(StrMessage)
: y  C& d+ H( W+ E: JSet ObjRSA = Nothing 4 I) u; E! [7 s( f( a# P
end function ) |( |, s. k4 C/ n# v: f7 U
function decryptstr(Message) + K8 z! O( t; A4 ^) C
Dim LngKeyE 5 r  w3 ]! S9 U) S9 f! z: Q
Dim LngKeyD
  y1 ~5 V# e  [; Q+ B; ]* cDim LngKeyN
2 W! N8 z3 g  lDim StrMessage " \0 J) q- a7 r  b3 w1 ]0 N
Dim ObjRSA
7 j: d0 C$ H, |1 h8 GLngKeyE = "32823" , j6 y  }" C1 Q1 f1 ?8 L# K  I
LngKeyD = "20643" % M0 Y6 Y# D1 R2 v" d3 X( p8 u/ Q
LngKeyN = "29893"
& r$ v& v6 a3 ^StrMessage = Message 8 I! m$ {0 T; }" }, u' \
Set ObjRSA = New clsRSA
4 F/ m7 e" t- F4 ZObjRSA.PrivateKey =LngKeyD
$ G8 N" `/ _) ?! @( i% l2 y0 p( ?) Z  jObjRSA.Modulus=LngKeyN & N( R! N+ }* _% A
decryptstr=ObjRSA.Decode(StrMessage)
" ]0 u3 _# d# l4 R" Y1 l# NSet ObjRSA = Nothing
2 O/ L; h: y% `( C: g; Fend function
; c4 Y. V1 i6 t$ [6 P) Cdim last,first
2 i3 v( O& @: p# ]first="!@#$%^&*()" # F+ R0 o; _$ k8 o+ r
Response.Write "加密前为:"&first & ~4 R0 v/ D' G+ n) A% C% ~- W
last=Encryptstr(first)
5 G) M- W. h- a0 f- rResponse.Write "加密后为"&last
( d2 M# z6 F8 m6 ?9 l. i/ s7 PResponse.Write "解密后为" &decryptstr(last)
, g: C4 m: V% G3 L/ c%> ==============================================/ N3 e+ l4 s* K4 z& \6 [7 [  T
剩下的就是字符的对照表了4 _4 t! T) S# J8 \
===================字符集================7 e4 p6 H3 Y) ], C" S" c
1_____6EBB
7 K1 M6 ^& }8 ^" _; k2_____5C1F( N& J% q' [2 D2 u1 G1 [* q
3_____4D75
/ ~& C! ^* F$ H# E4_____26CC# }' f2 p0 X3 R1 _+ n
5_____4F88
' W4 S4 p5 L6 _4 f! \& v6 S6_____3F4E
- k; j& N7 m% r! f3 C* x/ D7_____0A9D
: {8 ]9 @: m# C' I% x: l5 q8_____1A1C
5 l' @1 H6 R7 M1 K3 X9_____6D20$ {0 `0 N. p8 ?8 g$ W7 G- X( L( J
0_____1089
5 X  s, `& j" A0 Q- ^7 @6 Ka_____0F3E( [! [; k+ J+ y. R$ U4 o
b_____3159
+ P: r: R1 d% N& Xc_____35172 `5 X1 E0 L0 W
d_____419C, k0 ?- |9 T. a6 ^
e_____615C
9 |* H0 m% P  E; X5 B; ^f_____556F
: [0 ?4 {& ~. K( Sg_____2B7F5 b$ c+ r! r. T, R7 A
h_____0F9C8 {* E( }. J8 X$ m
i_____00FA! V  ^" a& p# R* G& E, Z5 }
j_____5A50' D$ V/ |+ h  e- E* v! J- u. d- c
k_____2850/ g: G& P6 [8 m: C: k
l_____3E7B9 ~' c  ]- }: p# \( T1 B' Z
m_____71C5
3 _% r6 m: Q7 H  F7 _n_____1FC8
4 C! J  O; T2 s. Fo_____74C1/ x# f0 I% O" `
p_____5FB8
$ S3 b+ b8 Y! Fq_____60853 B. ^* _4 e1 Z9 R" P! U
r_____3AC4- k6 x# o1 F" d
s_____2F50# Z- C2 W! P9 i* P+ @
t_____36F8( H% X- d. I0 S1 }# M: P/ \
u_____7010" U. D% P4 b) ?5 Q8 G; g
v_____0B429 `3 O# D$ h! w: O
w_____1C7A: y6 ?) p/ H$ {  F+ S  l
x_____16F87 A: c' k  u" R, A5 P
y_____2EE7
0 k% R2 M1 w0 j, ]3 o1 W  Kz_____5CF3
; }& g3 d7 T7 ?/ G* L( }5 f!_____6233
2 c/ x' P( X1 U# o* p9 r- _: y$ C& ]0 I@_____3A45, Q* C" T& V2 t$ O# H- i
#_____22916 }8 M8 Z1 s0 ]
$_____5D5C* ^3 n0 H! @  ^; U% n( M& k
%_____09B9
' {' A) k- e# s) e/ V& m- K4 t% s^_____43EA
( y9 q% l2 M( Z$ n* Q7 L&_____62B9* r! |, ^% t* J" B/ Y
*_____6301
2 {' J5 I0 I! ^7 F+ u8 P(_____4659% h+ ~* D* J$ M& o6 _
)_____5C82
希望做站长本人的学生请点击
http://www.3ast.com/viewthread.php?tid=13841
QQ790653916只负责SEO以及收费教学等方面联系,他人勿扰

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

收藏了。。。。。。。。

TOP

返回列表