返回列表 发帖

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

原创作者:柔肠寸断 [3.A.S.T]  http://www.3ast.com.cm
( T( ^/ r, B2 H  J原始出处:http://www.3ast.com.cm$ K: T5 U3 L  ^! ]- B

' t" J6 e4 N/ L, O" @/ m  ~看不懂的直接绕过* k4 I6 B  K4 h+ \7 J) F: @
加密前为:hwy123456
" v+ J  {4 n: X! D% n  ^5 |$ C加密后为0F9C1C7A2EE76EBB5C1F4D7526CC4F883F4E0 @5 z) v, e0 e# v7 e6 z  p  ]

% {; N5 s0 }! Y============================================- t- J3 }& O" u% O; m$ d
上面是当时自己校内的心情。现在已经解破出来了,分享给大家. ]; y' H0 x+ B$ ]7 a
也就不隐瞒大家什么了,这个是国内某知名大学的后台加密算法1 _1 I4 R) E/ F2 C9 @' ?3 Q
以下是RSA算法文件+ L+ z& L6 I9 ]* m' ]
% y3 \# x8 \9 g
文件名RSA.ASP, K2 Q( k, \3 }( Z! I$ ^3 u/ c
===============================================
3 G! o+ r( b% T" x; i; A& x<% 1 ?6 {2 ~5 s* y
Class clsRSA
) A3 j7 P5 F2 ~- |7 A* i  k8 @. WPublic PrivateKey
+ q$ b5 L' A5 _" q" Z& ?" RPublic PublicKey
# z& I6 @0 C% B7 h5 @Public Modulus
  x3 A! s( T4 b) N. ?, g0 vPublic Function Crypt(pLngMessage, pLngKey)
* V2 }8 p! K: {4 p, B# n: t# H7 wOn Error Resume Next 8 O: y  S9 f8 E$ R4 R! o
Dim lLngMod $ W8 Q" p8 q% o  ?
Dim lLngResult
' d. x+ `" n2 R* m/ o5 u6 YDim lLngIndex $ y8 I  }% p, F( v. V
If pLngKey Mod 2 = 0 Then " r7 d" m4 x5 n3 s; Z, |
lLngResult = 1 ' n5 r" a5 {3 T/ s, W
For lLngIndex = 1 To pLngKey / 2 ) v- _; ~& A% O" G5 h
lLngMod = (pLngMessage ^ 2) Mod Modulus : U6 V! c2 D9 R* k6 ?- A% I
' Mod may error on key generation   l8 u, }( c! K+ H: ]8 A% d( s
lLngResult = (lLngMod * lLngResult) Mod Modulus
/ c4 L/ U: _; }- tIf Err Then Exit Function 6 ~6 _4 e% ?, L: r2 a4 p
Next
; p6 t5 N* ?4 {# q! YElse
% k* e7 v; b2 g  y' ilLngResult = pLngMessage
' P+ A6 y5 X. A7 Y9 O7 hFor lLngIndex = 1 To pLngKey / 2 2 t3 W( ?. O: p8 F+ Q4 X" Q
lLngMod = (pLngMessage ^ 2) Mod Modulus - ~; E! q* A; K2 Y. P
On Error Resume Next % L8 c. t8 `" L) r4 z( W% V
' Mod may error on key generation 5 e0 B7 B2 L8 z
lLngResult = (lLngMod * lLngResult) Mod Modulus : I: s+ l8 Q6 b: D- q
If Err Then Exit Function
+ @3 {6 U9 i0 |Next % I# j/ ^$ Q* N- K( ^1 r
End If , j4 U: {) O) U' |# n# |. i, j
Crypt = lLngResult
# `' Y% y( ~* T- S/ B$ j$ `End Function
2 }/ F; X$ J. d- F
9 k+ I. w! [# s$ qPublic Function Encode(ByVal pStrMessage) & d0 \/ Z( x; d
Dim lLngIndex + [* @  _4 T: p& T0 a% V
Dim lLngMaxIndex " ]/ b+ A* s" B& R* ]6 d( [
Dim lBytAscii 5 W& E7 B$ p8 z2 B- l
Dim lLngEncrypted
% U  `4 d. ?9 x; Q$ f4 h, U6 WlLngMaxIndex = Len(pStrMessage)
* v& K! H; @; b0 ?4 xIf lLngMaxIndex = 0 Then Exit Function
! L5 H# D+ c  w6 {9 {, ]For lLngIndex = 1 To lLngMaxIndex ) l) Z7 `1 W" F: e4 i: n
lBytAscii = Asc(Mid(pStrMessage, lLngIndex, 1))
: M% @7 k0 y: _lLngEncrypted = Crypt(lBytAscii, PublicKey)
  u9 K; b. D+ m) qEncode = Encode & NumberToHex(lLngEncrypted, 4)
+ C2 f- H7 G, J1 r5 YNext ( }: @3 \8 H! O9 y
End Function 6 g% W5 t3 [" U
Public Function Decode(ByVal pStrMessage)
  _# C6 A& L) u6 H6 tDim lBytAscii " q! Y$ N" E6 X3 y
Dim lLngIndex 5 {" a6 k- X1 `
Dim lLngMaxIndex
  g6 X, K& y+ H! p/ k$ B/ {Dim lLngEncryptedData
0 H, w6 W" p$ I4 j3 JDecode = "" % k9 e8 P  H7 T' Q) F
lLngMaxIndex = Len(pStrMessage) * ^* F, ^) p2 F4 g" ~% o3 K
For lLngIndex = 1 To lLngMaxIndex Step 4
3 F# h/ \6 ^% W8 ?lLngEncryptedData = HexToNumber(Mid(pStrMessage, lLngIndex, 4)) # N( y4 s: U* [. y* \$ }
lBytAscii = Crypt(lLngEncryptedData, PrivateKey) 4 ]3 s5 s. c+ m0 P4 y! n
Decode = Decode & Chr(lBytAscii)
9 G6 D9 p6 R- K6 B# ^6 i: m7 gNext
/ K- p' L# ~4 u3 o. y; f- g# {End Function . Y  M& Q* L# a% N1 H. J; p2 o
Private Function NumberToHex(ByRef pLngNumber, ByRef pLngLength)
/ }1 b) I, s! ^7 D) {' y2 xNumberToHex = Right(String(pLngLength, "0") & Hex(pLngNumber), pLngLength) ! n  v, h. {, O  z
End Function
- W- l! G' Z5 R' fPrivate Function HexToNumber(ByRef pStrHex)
' W2 S, {+ z1 ^- U0 NHexToNumber = CLng("&h" & pStrHex) 1 k( r0 ]1 q# `: C9 \- \
End Function
2 L7 O8 @$ u! f+ u& f. FEnd Class
" T8 l: I' o  X+ P: n' bfunction Encryptstr(Message) # E9 J) m2 F" t7 |6 P3 W/ h3 t% G
Dim LngKeyE
. e% x4 b" {8 ^- J$ ?Dim LngKeyD - h& h& q. D9 G7 p' m- S6 H# s0 H
Dim LngKeyN
3 ~/ n9 d# y. p2 l: Y- PDim StrMessage
* d* K2 r: A* j0 Y( a  K" yDim ObjRSA ) V  w! J9 Z. e" {+ ^/ ^6 M' q0 M
LngKeyE = "32823" # O: Z# O) M1 T3 Q3 G# N
LngKeyD = "20643"
6 e( B' \1 ]& e  I0 HLngKeyN = "29893" " v5 G8 J9 t1 D. ~
StrMessage = Message
3 ]3 M3 v: u' T+ A0 h* S4 GSet ObjRSA = New clsRSA
5 l. ?+ j. z; P% IObjRSA.PublicKey = LngKeyE * S4 O- h8 `5 g3 i
ObjRSA.Modulus = LngKeyN
. c/ E7 n$ w9 Y. b( uEncryptstr = ObjRSA.Encode(StrMessage)
2 c) v* w- t( ]. j3 GSet ObjRSA = Nothing
; V+ }  c. l0 u% ^end function6 b3 }4 F2 H4 N5 X$ H- y0 ]
Function Decryptstr(Message)   E, o& W; t' b+ r1 ]2 B7 H
Dim LngKeyE
. F: H8 S% K7 kDim LngKeyD & U; m; @9 t1 b% a: L! t
Dim LngKeyN
7 I! P: g+ A6 ?& n* sDim StrMessage
# `. s) s# m% q* N# gDim ObjRSA " J' t/ i# p. D+ w+ J% _0 W2 z; G4 n
LngKeyE = "32823"
- q0 b# q4 i9 ]! HLngKeyD = "20643"
' Q- U5 z+ D8 R3 u7 W  oLngKeyN = "29893"
* }( Q5 w/ p% K( Q6 k" JStrMessage = Message 8 b- A( C: J; L6 z
Set ObjRSA = New clsRSA ' A( t, x+ G. S* Z0 F8 }) @
ObjRSA.PrivateKey =LngKeyD
0 S8 o+ G* W3 w1 a' C9 B& oObjRSA.Modulus=LngKeyN
* c9 z* _3 m! s0 w% ~( ]decryptstr=ObjRSA.Decode(StrMessage) , m/ N5 |/ O! k7 O
Set ObjRSA = Nothing
+ `* Y' Y6 F/ {6 }end function
8 S! \  S- a( u" ]& n%>  b. V0 T, T/ ^# G3 \- i. t
===============================================
7 w$ N) ]9 [; O; v" M1 ~
: k6 {+ e, L6 u8 R还有一个用于测试这段代码的test.asp
* t7 L: U8 N6 J' P0 z有兴趣的自己搭建个IIS测试下+ s4 g2 K4 r# g3 M' e
<!--#INCLUDE FILE="RSA.asp"-->
# R& u: b0 L+ E9 i; }4 M* p<%3 C2 j' n* z: X1 o
function Encryptstr(Message) 2 c# F8 @" v8 \! t: v. ^' d
Dim LngKeyE
& v# g- n% x; ^Dim LngKeyD ; U" b6 f8 b: e/ y) e% F* I& m
Dim LngKeyN " L) p. A2 ?( Y9 I
Dim StrMessage
) r# G/ b2 G% b6 I, s, [1 bDim ObjRSA
& N$ p0 {: u7 A" Y0 }- WLngKeyE = "32823"
* U1 X3 D6 c: |* h7 {3 ]: D8 @LngKeyD = "20643" * l6 L( L: l* S- f6 g1 z
LngKeyN = "29893"
2 r1 a( q2 t! }0 H' A; bStrMessage = Message # g" \" Y% K) A) Y  d
Set ObjRSA = New clsRSA " |, g* c( d" \+ M: R+ b' v
ObjRSA.PublicKey = LngKeyE
1 c5 k3 `  q8 K' ^" FObjRSA.Modulus = LngKeyN
5 _9 l# `3 D2 l0 o; a3 R, k/ sEncryptstr = ObjRSA.Encode(StrMessage)
6 c. Z1 {! ^, [9 @) iSet ObjRSA = Nothing
  i, r# i8 i- t# |! o7 G' Zend function 5 {% x1 {% E9 T4 V. H2 t
function decryptstr(Message)
5 ?0 z% D1 v# z' M1 O& ~- h" JDim LngKeyE 7 [6 p5 R: C& `3 U
Dim LngKeyD 8 O- `- ]. t9 Q# o+ F; m
Dim LngKeyN
9 s) C. o% [0 d' X. C; d6 N. i9 eDim StrMessage - e4 M1 ]% A# k' L
Dim ObjRSA
% Q" \0 W' O7 L+ f0 xLngKeyE = "32823"
1 t. j) D& Y6 j  e+ n; h, pLngKeyD = "20643"
  {* L$ v' a% t! SLngKeyN = "29893" : [. {6 y0 u% }( ?* h8 {' l# H" t
StrMessage = Message
" X1 C9 O& k! ~Set ObjRSA = New clsRSA
7 c6 J0 o# I+ [4 ]/ uObjRSA.PrivateKey =LngKeyD
( _3 F& M( @8 X/ W2 Q8 yObjRSA.Modulus=LngKeyN
2 T6 @# G$ B+ m/ a* w9 @3 `decryptstr=ObjRSA.Decode(StrMessage)
3 C& v  j8 T8 y. K1 e2 C7 D' T: OSet ObjRSA = Nothing
! Q, h6 x' A+ G3 A$ y. Yend function 1 H) w! D7 E; }- b! i; `
dim last,first , C, T+ P& Q; B) H* h6 W
first="!@#$%^&*()" % u4 Q: f7 P$ w- I* d5 ]
Response.Write "加密前为:"&first
  G" o; M: |$ \  S0 xlast=Encryptstr(first)
1 j$ U3 d* N2 k- vResponse.Write "加密后为"&last
# r' V& C: I* Q9 z5 rResponse.Write "解密后为" &decryptstr(last) % ~  `, h3 R7 ^5 j0 T( d. C/ B
%> ==============================================. f! N" N1 d$ G
剩下的就是字符的对照表了
$ h" ~$ F# j8 @  C===================字符集================$ ]% j5 C, |  G! M1 v% ^
1_____6EBB
  q; p! o' D3 G' I2_____5C1F
1 X( t% m8 b  s' p- {, W: y9 M3_____4D752 c4 A9 I5 V% N  z1 X
4_____26CC
$ ]; Y% Z3 g* n9 d) M) M; n. ^5_____4F88
% m' H% Z4 U) G6 y6_____3F4E
2 N4 f, {# O, ?6 X! Q7_____0A9D7 l2 B2 J, D" Z( M5 T- ]& H, P$ u( d
8_____1A1C9 D- n" z* ^6 X( g' \! Z3 c
9_____6D20
7 @; A4 v/ _8 T4 S4 J0_____1089$ @) {9 i$ f' p: D7 Q0 m, A; J
a_____0F3E
- t- }* T* v0 \! F+ bb_____3159% v* J0 j8 W8 {, U0 Q) e, r
c_____3517
  M7 X7 l, B* D1 c' U. Y* i8 Xd_____419C
" ^6 S( {! p! j% Y9 P& ie_____615C
" d6 u- p6 k+ R2 @. o4 k& df_____556F
) m, {0 g! w, T* T* Cg_____2B7F
. ^/ ^1 V) o" m6 N! lh_____0F9C
* x6 Y$ P8 F) t+ u6 ^, Ri_____00FA
/ @2 d+ z0 G2 o4 Uj_____5A50
6 @) O( B! K, d, nk_____2850
6 u' \9 V( y' m! g8 ol_____3E7B
( ]: s" _8 _" r1 p; m  Lm_____71C5
5 p/ X7 c0 F0 K  }2 q; un_____1FC8
8 l8 C* V0 h& |* K0 |  D+ vo_____74C1' k- A7 n$ a' D9 j
p_____5FB8( ?2 P4 Q" u: ], y, t! ~4 K0 }
q_____6085# a4 b9 o) W0 S8 @
r_____3AC4& ~. L3 ~. V$ b3 Y$ ]1 V
s_____2F50& M1 t* m/ |8 e: H
t_____36F8
% h$ l# b& }6 y3 W( {& ?! \4 gu_____7010
( v8 Q  J; q7 ?/ {7 O$ f0 f5 yv_____0B429 t, f& V+ O. D0 v
w_____1C7A
% y, z8 J7 T- y& {x_____16F8
( w! g% }! U( N3 O% k; O4 Hy_____2EE7
+ e$ C; U$ n' N8 gz_____5CF3
0 a9 K; p1 n' N5 A5 E!_____6233
/ p8 l. C: g4 R' E- B@_____3A45
+ s2 ]2 a, i' C) l4 S3 c- w#_____2291
1 _" C" Q- p2 N) v$_____5D5C
4 {# t0 b' Y& R$ V  t6 }%_____09B9; T9 S) s1 a% ?, w7 B9 P7 e
^_____43EA4 d' G( V' Q7 L5 ]) ?- B
&_____62B97 N3 I; A8 M6 B
*_____6301$ i1 I- ?- a1 j4 p4 i( ?3 P
(_____4659
' k8 ^' ]6 `* `)_____5C82
希望做站长本人的学生请点击
http://www.3ast.com/viewthread.php?tid=13841
QQ790653916只负责SEO以及收费教学等方面联系,他人勿扰

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

收藏了。。。。。。。。

TOP

返回列表