返回列表 发帖

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

原创作者:柔肠寸断 [3.A.S.T]  http://www.3ast.com.cm
' h# O6 M) b9 L* o9 I8 Z* }) I原始出处:http://www.3ast.com.cm; P: `3 b5 Q6 z

0 A& m7 Y( N% S+ v7 t! _看不懂的直接绕过
8 |$ J( E) J/ S, E  S7 K2 P: C加密前为:hwy123456
$ B0 }# y# s% L加密后为0F9C1C7A2EE76EBB5C1F4D7526CC4F883F4E
- q! n) P2 U( X. D) p8 K$ D! k4 N: @
============================================
& S# a2 e: M! A) _: b上面是当时自己校内的心情。现在已经解破出来了,分享给大家/ }. |) a% i$ J0 Q! g
也就不隐瞒大家什么了,这个是国内某知名大学的后台加密算法% H$ j, |7 R; X0 g8 i
以下是RSA算法文件1 i1 S9 U) L( [/ f* y; e
/ o" ^! w) e7 Q/ e# q" J% |, r
文件名RSA.ASP- T+ o' L+ {" t3 \) _& u5 D
===============================================
, Y& U. {' y1 |' v<% + t) \8 H" `4 _9 w/ Q( T$ G/ O
Class clsRSA
1 d* e4 J6 v2 v8 O5 q5 z& wPublic PrivateKey
# Q# Y9 Y$ O* z( O4 KPublic PublicKey 1 z8 T; r. Z  `" p9 b7 {, n
Public Modulus
$ k3 f, k5 Z1 B1 {3 `4 b1 IPublic Function Crypt(pLngMessage, pLngKey) # j$ m$ F: {$ q& P
On Error Resume Next
9 U  G) \) g4 [Dim lLngMod ) W  t' a6 j6 ~; {0 Q9 C, o
Dim lLngResult
( ]0 r( L; ?) [Dim lLngIndex * k5 N  }( P! c/ I8 o- P6 F
If pLngKey Mod 2 = 0 Then
7 V! n# W. y- i- m5 _  i: _; PlLngResult = 1
: w0 f: \8 i- k6 |( gFor lLngIndex = 1 To pLngKey / 2
! c: N3 o; o7 hlLngMod = (pLngMessage ^ 2) Mod Modulus
+ ~4 y4 |; b; [$ A% I' Mod may error on key generation
1 D3 H/ J- p# A$ f2 O! b$ BlLngResult = (lLngMod * lLngResult) Mod Modulus
4 ~6 ~( {* }0 l% pIf Err Then Exit Function , j/ m- W5 ^+ I2 h
Next " p! k8 ~) }8 I$ b
Else
5 `8 x4 T! q6 K  P- b! AlLngResult = pLngMessage * G" u0 H  Q) b: }9 E" D
For lLngIndex = 1 To pLngKey / 2 : M6 e2 X1 B3 ~2 T, U# S
lLngMod = (pLngMessage ^ 2) Mod Modulus ' A' y: C9 O6 f2 M
On Error Resume Next ' n( X7 o& s, o" I7 [% w
' Mod may error on key generation
$ c5 r: _" b4 m& J2 [lLngResult = (lLngMod * lLngResult) Mod Modulus ) _! W2 p6 c1 b8 Y+ j. H
If Err Then Exit Function ' H) m7 R4 f. r1 {# U% _6 ?
Next 6 l# O; d( g% p) \
End If
0 k/ _8 W! x% h8 o; tCrypt = lLngResult
% `9 x  G! E+ U6 s# ]+ M# MEnd Function2 w2 Q$ h- F9 [7 z) I; ?

: V* a4 @8 H* k) e. m! A# `( ]% b0 KPublic Function Encode(ByVal pStrMessage)
+ B. L( [4 [  tDim lLngIndex $ Z% `0 n! n& v! F
Dim lLngMaxIndex
7 L  R9 w+ N- oDim lBytAscii
5 }) @8 c) }7 b8 _  }0 n  pDim lLngEncrypted
. i6 {) \& e; S, h( x, DlLngMaxIndex = Len(pStrMessage) ! v" F* }" a) q. T0 R
If lLngMaxIndex = 0 Then Exit Function 2 }* k. t2 p7 e( T" u
For lLngIndex = 1 To lLngMaxIndex 2 y" }) y/ B6 [* d1 W* E
lBytAscii = Asc(Mid(pStrMessage, lLngIndex, 1))
* J9 J* P9 Q8 a' |lLngEncrypted = Crypt(lBytAscii, PublicKey)
8 |2 u, X( b6 H( C4 p8 BEncode = Encode & NumberToHex(lLngEncrypted, 4)
# r) O+ P" z5 k5 ?Next
' H( @8 ?" V! Z% BEnd Function $ U$ T4 x2 }5 G! k
Public Function Decode(ByVal pStrMessage) 4 h/ h% d  P* C) U; a+ j
Dim lBytAscii
) g/ N, ^+ m/ K/ W+ d. lDim lLngIndex 5 a; Y: @  A* r
Dim lLngMaxIndex
: Y$ X3 I% w; E0 M/ VDim lLngEncryptedData
+ S, u$ W$ \2 C+ y/ Q$ u: \7 TDecode = "" * U5 Z- J' I/ e# j: c$ v+ ]( r
lLngMaxIndex = Len(pStrMessage) ! g6 ?% F% S7 S) c
For lLngIndex = 1 To lLngMaxIndex Step 4 4 u# r! ]( x" `
lLngEncryptedData = HexToNumber(Mid(pStrMessage, lLngIndex, 4))   S1 A* q; B7 Q
lBytAscii = Crypt(lLngEncryptedData, PrivateKey) 7 s" b; a4 }5 i+ Z4 J1 H1 m
Decode = Decode & Chr(lBytAscii)
6 k: L5 j* x2 l' n" ]Next ( D% @4 i5 u9 m- E4 F7 K
End Function
4 ?% e7 y$ s6 `. EPrivate Function NumberToHex(ByRef pLngNumber, ByRef pLngLength)
6 |( F/ ?1 e+ B, JNumberToHex = Right(String(pLngLength, "0") & Hex(pLngNumber), pLngLength)
5 q% a( S& N; k6 ]( aEnd Function # D: f: F, a& g$ n' b4 ?$ B
Private Function HexToNumber(ByRef pStrHex) 1 x2 ^7 v2 r9 @+ p: s4 i, R5 B
HexToNumber = CLng("&h" & pStrHex) 0 u2 B& P8 l; y/ c" j) k- `
End Function ' z6 Y2 c4 C/ W; m- E) B! _" d2 [
End Class + n3 R! ?9 u: T' J9 m2 U$ O
function Encryptstr(Message)
6 g5 r/ K; b- c- r% B% H4 i: vDim LngKeyE
; V# `' X7 ]4 h: ?: h- tDim LngKeyD " [8 [4 k: ?- Z* |
Dim LngKeyN
; L' N! n1 M$ r# P0 sDim StrMessage
  ^7 n' U! y5 R+ Y2 PDim ObjRSA 3 |# I8 l& k- a1 N4 j4 O% ]/ D1 F7 q0 g
LngKeyE = "32823" / h& T. L; g& R4 g1 \; u7 `
LngKeyD = "20643" & |$ y9 u6 W$ t+ R
LngKeyN = "29893"
$ d" ~5 s* U* w; w6 p0 G+ n! SStrMessage = Message
  J% C5 |& C1 ~2 ]; }Set ObjRSA = New clsRSA 3 ^( u. z" J! q: e' \
ObjRSA.PublicKey = LngKeyE ; P& H$ x+ M3 {; F! ]
ObjRSA.Modulus = LngKeyN 3 h. M7 Q# X& S  Y
Encryptstr = ObjRSA.Encode(StrMessage) & p0 f8 I4 Q/ N8 s
Set ObjRSA = Nothing
9 Q' p- l* o3 B$ w3 U, [end function
& h9 I1 M& N9 Q; W- D/ \9 H" wFunction Decryptstr(Message) 2 h) p$ J: E! V. y5 r) L* R
Dim LngKeyE # k' f: B" n$ E
Dim LngKeyD ) q1 V+ L6 Y' C6 B& a4 M$ l/ e
Dim LngKeyN
+ o2 Z. O$ E) \3 F9 R- xDim StrMessage ; q$ i! U# s* a+ s
Dim ObjRSA
9 o* c3 [' E2 NLngKeyE = "32823" - \+ G3 g; n6 U# s  b; Y2 }
LngKeyD = "20643"
) n$ ?$ |1 m7 J) r* kLngKeyN = "29893" $ r+ b$ Z7 ^- B
StrMessage = Message * Z* B; h: [. ^$ _# n+ ]4 ?
Set ObjRSA = New clsRSA 5 g1 Q% V6 a/ U* l: O
ObjRSA.PrivateKey =LngKeyD ) G; d1 p( l0 a$ `' f
ObjRSA.Modulus=LngKeyN 8 K/ j  W2 E' G3 S- R; |4 p1 \
decryptstr=ObjRSA.Decode(StrMessage)
+ B; L' R6 ?+ a" OSet ObjRSA = Nothing
: a2 u( v. h. t% kend function
* a/ r# V+ L5 ?' t# z) [%>
! Q  z; y0 b" g9 r( m===============================================4 {5 J5 A, u, ~
1 Z7 H# c" i" Z+ i( h  i4 \
还有一个用于测试这段代码的test.asp
6 T2 K( A& m' z有兴趣的自己搭建个IIS测试下1 c# g+ {; o5 g+ x- j# h3 t
<!--#INCLUDE FILE="RSA.asp"--> 9 C& P8 N4 M6 V% [- w1 ~
<%. O& l- m  ?/ r! q% ?
function Encryptstr(Message) & z! A1 X  n9 C) H1 |8 T
Dim LngKeyE
, d' X! y' R7 d  K( I0 T. IDim LngKeyD
  d/ h6 B5 }& K; c4 l' z! h9 x0 KDim LngKeyN
  P' X4 [  @* Y3 `8 _# H& @& GDim StrMessage # v" n5 N. L8 M. C# v
Dim ObjRSA ( f" F% M' y4 @5 f  {; J
LngKeyE = "32823" - b8 B0 |& ~- E9 D8 E0 L
LngKeyD = "20643"
' g) L+ d2 a! h& G/ FLngKeyN = "29893"
9 Z' j- ~, y/ N: a, I8 {StrMessage = Message , C$ o+ e) o6 Y, s8 a
Set ObjRSA = New clsRSA
5 ?$ c% U2 v! j6 w4 E. w1 CObjRSA.PublicKey = LngKeyE
6 N+ I& ^3 F4 _- k3 E$ R: ?  CObjRSA.Modulus = LngKeyN & p2 h1 O5 h: Y4 d0 a/ d9 ]- l
Encryptstr = ObjRSA.Encode(StrMessage) 2 B! Y; P% p, ?* f# Z$ e
Set ObjRSA = Nothing % }  P$ `5 }1 [# B# E
end function
; i" \# `8 s3 z9 Sfunction decryptstr(Message) ) Q( g/ w6 p1 u) L
Dim LngKeyE & s" z2 N/ B6 O/ _% ~% I
Dim LngKeyD
2 r1 O/ ~  |" f9 @# z1 |) _Dim LngKeyN 7 }! F9 k; x, H- d) ]- @! U, L
Dim StrMessage 2 V* I+ z3 _, l2 V! [" g8 [
Dim ObjRSA . {# x( T& f4 a( f: C7 }) q/ a5 Y
LngKeyE = "32823" 9 F8 W5 i4 }6 ~/ f7 @1 F" D7 }, U5 ^. |! a
LngKeyD = "20643"
! U) Z7 z. L! s9 X" dLngKeyN = "29893"
7 F: V& m. W7 e' P7 CStrMessage = Message
6 W# _1 q: N$ A. a' pSet ObjRSA = New clsRSA
. ~8 \, v; ^# h/ ^ObjRSA.PrivateKey =LngKeyD
2 I# \$ M9 d, ]9 YObjRSA.Modulus=LngKeyN
' O3 d- q. [6 t% o3 I  bdecryptstr=ObjRSA.Decode(StrMessage)
. @) y7 J+ p+ S) X& @2 b) t& mSet ObjRSA = Nothing
" n# C% @, m( c; {  bend function - B3 H8 D  o1 O0 H; f4 h
dim last,first
- q9 Q+ A4 ]( N) V# S; lfirst="!@#$%^&*()" ! }5 W3 O; ^: M) Z7 n, s
Response.Write "加密前为:"&first
* H9 g* B' P8 B2 zlast=Encryptstr(first)
2 v! f: q* w8 E5 V  E8 i, ^" GResponse.Write "加密后为"&last
9 ?  o2 m- `9 jResponse.Write "解密后为" &decryptstr(last) / a9 j% l5 A$ Z9 P8 r
%> ==============================================  s0 A; A. \; N, V
剩下的就是字符的对照表了) j: M5 U/ h+ ]9 h  }+ X& h: K
===================字符集================
, ~) y5 N: }' G& I1_____6EBB
. v- f4 c, g5 |: v2_____5C1F# d  U, J& }! w, H7 w6 |" R
3_____4D752 P  r/ `  n! N
4_____26CC
( Q( ?( `! d: k: H5_____4F88
' A; G) i3 \6 R/ y( _6_____3F4E% Y- L! B8 {, t. Q: d
7_____0A9D
* Z1 M* ^' d/ @" ]2 j  B6 @1 N8_____1A1C5 W) G$ x7 d  E2 l1 _
9_____6D20( @, e: x5 T) Y. t+ r& B
0_____1089
6 P( T+ E! j# R6 A  {6 u7 {- pa_____0F3E; Y3 g4 O- F. M+ E8 m- B' f) l
b_____3159
+ _& `, A  G& B9 g2 D/ _2 R. wc_____3517
# p; F" ^! b- _  Id_____419C3 ]8 t& p9 w( M1 B) A7 ]
e_____615C; _) \4 t$ E# W. }
f_____556F
/ Z/ \& j8 o7 `  R; F- T6 [g_____2B7F! l$ }' q9 D, x6 x5 Y
h_____0F9C
' c1 J: P( }& v5 O* n& T5 A% ?  Vi_____00FA* |2 Y0 Q2 B$ T2 R7 D8 Q) T
j_____5A508 s5 ^$ ]  F" Z
k_____28508 t3 W) e1 R9 m
l_____3E7B' |5 g. A% p; ~& O# L. k7 s
m_____71C51 j9 ^: U3 e' e3 L8 X' Q
n_____1FC8+ X3 f& G4 C; [; E# r3 k. _
o_____74C1
5 v' J. V! k* R2 Q  xp_____5FB8+ n$ S0 Q6 H9 e' F
q_____6085& \& r" N9 N; I3 [6 O" E
r_____3AC4  C& c$ K8 [0 c
s_____2F500 ~8 M7 U! e8 L  O5 K
t_____36F8! X7 a6 W& `1 T# `  Q: v# W. W
u_____70107 p$ l$ q: M. G# B0 y( v
v_____0B42
2 u  ^3 \' I: m0 Bw_____1C7A" y8 Z$ L4 @8 g$ N0 @8 o
x_____16F8; K4 L: O6 L: S! {$ l
y_____2EE7( H+ n) e9 ]6 b5 r3 m
z_____5CF3, h0 U- U# b3 ^' Q* I# m
!_____6233
0 g% [7 G9 I' }& J0 M@_____3A45: V# M4 y* A4 p+ r$ a+ g+ ?3 L% I
#_____2291
- z* s2 O, A4 h$_____5D5C
9 X( B' K, l) I2 [3 F3 z3 P%_____09B9
  v8 N! W0 z7 e8 i  f1 R/ o# p^_____43EA# Q5 }$ k1 {9 q
&_____62B9
. x. l: n+ S- B6 s/ Y& C. S+ q*_____63015 }9 l5 J# x* j
(_____4659
7 r9 |7 e4 J7 d& `)_____5C82
希望做站长本人的学生请点击
http://www.3ast.com/viewthread.php?tid=13841
QQ790653916只负责SEO以及收费教学等方面联系,他人勿扰

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

收藏了。。。。。。。。

TOP

返回列表