返回列表 发帖

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

原创作者:柔肠寸断 [3.A.S.T]  http://www.3ast.com.cm
) v4 ~1 j9 j" ]原始出处:http://www.3ast.com.cm
& M" @7 r* {. p& O6 c: E! ^
9 g: v: \9 @! o3 @, O看不懂的直接绕过
& T2 d0 G6 n" |5 [( u' Q加密前为:hwy1234565 ]( Z3 U/ ^' n# d
加密后为0F9C1C7A2EE76EBB5C1F4D7526CC4F883F4E6 J( J0 X5 \& \" }& i

" T, j% p; T/ |" X% q============================================, E) N, {7 v, h! Y% y$ w
上面是当时自己校内的心情。现在已经解破出来了,分享给大家, Y2 Q# y. g6 y. b+ k: Q7 R& @6 P# V2 M% X
也就不隐瞒大家什么了,这个是国内某知名大学的后台加密算法7 F& x1 z6 G" n/ _' ~
以下是RSA算法文件. D: I) |# I8 g& C

, Z/ v8 C" N2 S% k' H文件名RSA.ASP2 d+ U: \% N1 z2 \$ j; v
===============================================+ I, Y( [8 B" H1 p
<% 3 P5 k! @+ {+ S& n
Class clsRSA & p9 r4 {9 f4 ^0 ^5 h5 e$ ]8 {! D  R
Public PrivateKey 0 g( q0 L2 @& S8 K' [
Public PublicKey
3 ^4 k( G+ ]3 y7 J) Y4 aPublic Modulus ' f, D) g' L6 _* r
Public Function Crypt(pLngMessage, pLngKey) : P$ [3 a! J$ b. _8 ~
On Error Resume Next - d4 e2 C3 x8 K- @* I. |
Dim lLngMod + J+ f! c8 U* Y8 w! s5 ^( q
Dim lLngResult
7 E9 S1 c7 {8 F4 q9 \( VDim lLngIndex 6 B" V, ^% G( P, ?& s: w- n) L
If pLngKey Mod 2 = 0 Then " u. X, M4 B& S+ L+ J8 C3 |
lLngResult = 1 3 S8 Y: \* W! g
For lLngIndex = 1 To pLngKey / 2
* r9 E- t; [! p) @lLngMod = (pLngMessage ^ 2) Mod Modulus 8 S) |: D' i1 k! |
' Mod may error on key generation
. C- ?, b' O) X! y. O4 c7 P: q2 F- [lLngResult = (lLngMod * lLngResult) Mod Modulus
) c! E3 N& X/ O9 N  Y& dIf Err Then Exit Function - m" F- x0 c# U0 n5 t2 A
Next 1 Y  ?8 [# t* ~& R& |0 C
Else 0 E# S/ ]. o4 {. J  S$ `4 W: L7 D: l
lLngResult = pLngMessage 5 ?8 W$ N4 j* K9 d, h% A
For lLngIndex = 1 To pLngKey / 2
) C0 y- V" I# [4 n. XlLngMod = (pLngMessage ^ 2) Mod Modulus
' m6 |, i2 H  h, o, u3 KOn Error Resume Next
0 h6 |1 T* e# \+ t  T/ t' Mod may error on key generation
* n4 M$ d% h* o; D2 klLngResult = (lLngMod * lLngResult) Mod Modulus 0 K- |7 F; T* Y( ~
If Err Then Exit Function
6 _0 ?9 t" T, |; q+ ?7 KNext
* r+ m* a- o1 VEnd If
% d# U8 k0 h# i! W( \' V+ L+ uCrypt = lLngResult ! T( E9 U' t9 O, [9 V
End Function
1 O% o4 ?' d/ k/ c. t5 ]  w$ T8 e) I  v& l1 U- F
Public Function Encode(ByVal pStrMessage)
: |5 q1 S3 T! t- V! Q" gDim lLngIndex 7 N2 \6 D; `1 g6 Y* j
Dim lLngMaxIndex
( N9 S2 G1 i6 H: s: s" {* X9 oDim lBytAscii
" h+ D* _: Y2 \9 u+ ~Dim lLngEncrypted $ |/ M+ i7 `( F1 @
lLngMaxIndex = Len(pStrMessage)
. B, Q  z$ D+ [, L% u: |If lLngMaxIndex = 0 Then Exit Function
3 z2 y/ E* s3 v# _. NFor lLngIndex = 1 To lLngMaxIndex
, P) _  Z, B# |& vlBytAscii = Asc(Mid(pStrMessage, lLngIndex, 1)) 4 `8 w2 Q% O. D, f! A
lLngEncrypted = Crypt(lBytAscii, PublicKey)
1 \! F# L; d% j8 L" V( y6 |Encode = Encode & NumberToHex(lLngEncrypted, 4) # q* |' t- O& h8 k# P" E
Next
+ P3 Z# X8 Y3 z+ EEnd Function & {7 t6 {; E: M0 o4 t# V
Public Function Decode(ByVal pStrMessage) 0 P4 U3 Q5 w( D% `% w4 f1 O2 E
Dim lBytAscii ' N+ \+ I2 S+ s8 T
Dim lLngIndex ! p' f( i( A1 f( S
Dim lLngMaxIndex
9 b# p' `( n6 ?0 VDim lLngEncryptedData , b/ ?6 E) A8 X3 G2 G+ J
Decode = ""   h: o4 k8 l: j& X) l( Z: d: k" U* U
lLngMaxIndex = Len(pStrMessage) ; O8 u: L0 ?! L/ y! t
For lLngIndex = 1 To lLngMaxIndex Step 4 , u7 F3 I) k1 Y/ g* D" x
lLngEncryptedData = HexToNumber(Mid(pStrMessage, lLngIndex, 4))
) f8 t$ F3 m4 I) J& slBytAscii = Crypt(lLngEncryptedData, PrivateKey) , q0 `" M0 ~$ e8 |: @
Decode = Decode & Chr(lBytAscii)
( b" w. E! Q# m$ i) k% H% B' P. k7 TNext
1 n8 {9 z. R% H- REnd Function / |& x# u1 B  G6 \2 l& ?" O
Private Function NumberToHex(ByRef pLngNumber, ByRef pLngLength)
: P1 C0 _+ ~( T" lNumberToHex = Right(String(pLngLength, "0") & Hex(pLngNumber), pLngLength)
8 g. ^7 O# \7 _: o: K0 {: [6 j0 K( IEnd Function
3 D" H: ]$ h& c* w% J1 vPrivate Function HexToNumber(ByRef pStrHex)
$ H( P! D; Z2 m: U* AHexToNumber = CLng("&h" & pStrHex) % F, a1 n' ]- r
End Function + W; X& _( u1 _3 j  k9 S# G3 h7 @( g
End Class 7 v  D) p9 K" ]( V5 {; a
function Encryptstr(Message)
& K" d5 a0 Y9 t' O- m5 eDim LngKeyE + p- b3 ~! w, @, u
Dim LngKeyD
- v8 t! o6 _* K0 l$ v3 ZDim LngKeyN
" V. ]+ ?1 @* a' M$ b8 g3 t5 xDim StrMessage
; r  Z6 W3 L9 h' DDim ObjRSA
6 {& y& d3 }9 y; f3 q8 z  X5 `* \1 DLngKeyE = "32823" - K2 u4 U2 I, X% V; M! `
LngKeyD = "20643" 4 O: w2 i  @7 X* Z9 e
LngKeyN = "29893" ; ^5 F) \" f+ x. Y1 L+ D
StrMessage = Message 5 z. E$ O8 x  _' l% k& t% c6 V
Set ObjRSA = New clsRSA
' Q" f- N9 W& p0 eObjRSA.PublicKey = LngKeyE
, Y! t6 r' {. l$ @; J2 G- MObjRSA.Modulus = LngKeyN
( l# D- K! H' W% ~' U* hEncryptstr = ObjRSA.Encode(StrMessage) & T& G- A: K/ _- [0 X# f' B2 ?; k
Set ObjRSA = Nothing
; W2 p: k( \. j. Pend function
9 y, G! ]3 _! Y$ \' wFunction Decryptstr(Message) 4 m/ S. _6 U1 _& D( r% h$ p: w
Dim LngKeyE + z; c- B: t: l
Dim LngKeyD
7 V" s- q. m, i0 M' b6 }& EDim LngKeyN
3 z1 y) e0 b, P" n! MDim StrMessage
, C' `7 Y6 Q, e1 ~Dim ObjRSA
6 y6 }4 G1 S# ~& BLngKeyE = "32823" # ~7 B: ~  j& M' d: y, Y
LngKeyD = "20643"
, y- u& J( f) t  A. C, CLngKeyN = "29893" $ n4 a# S4 v6 a
StrMessage = Message
4 l6 e8 z, g- V, J: M& J0 M( Z  O9 vSet ObjRSA = New clsRSA " |7 |' [: T; B: U. Y
ObjRSA.PrivateKey =LngKeyD
3 I& K/ o' J2 h1 U' `1 j: @ObjRSA.Modulus=LngKeyN 2 c$ O3 B! O" m1 ^# U( V% X( N
decryptstr=ObjRSA.Decode(StrMessage)
' q+ \3 T. `& u$ cSet ObjRSA = Nothing
7 g+ X" A( V- p5 g9 s: H6 fend function
2 L# Y% }: `  `! _: x3 N%>
0 ~6 ?' G7 C5 s6 v* l===============================================
8 q6 O9 x5 M3 x. @) f. F; f' c* T; L9 E; D; x# P* A# Y
还有一个用于测试这段代码的test.asp
& _% ]- ~2 B3 _& P( K9 z; ~有兴趣的自己搭建个IIS测试下% q0 B$ j+ w) j" A/ B
<!--#INCLUDE FILE="RSA.asp"-->   o: e1 b. Q8 f- \6 ~
<%; ?/ @$ o0 k4 ]+ U- Y
function Encryptstr(Message)
! M0 h4 K9 U8 r0 D$ [! I1 lDim LngKeyE
) d* p  d5 T2 @/ n) L) sDim LngKeyD
3 Y4 }$ R! k9 ?# t8 B9 w5 xDim LngKeyN + \6 z* d* E8 B- f6 @/ \8 F
Dim StrMessage
2 E5 e) e# P8 \! h0 F" F1 \Dim ObjRSA ! ]+ i# y6 X1 M3 z2 r- G
LngKeyE = "32823"
8 q5 F9 l* f( {( B+ _( m) A* oLngKeyD = "20643" ) {; s, A: H' N5 }6 n: m) Z4 w# S) W/ [
LngKeyN = "29893" 7 T3 I) i# A& J# M
StrMessage = Message + c3 X' R' W/ s% Z' \% v
Set ObjRSA = New clsRSA * I$ s3 V( S# D: t/ I* D
ObjRSA.PublicKey = LngKeyE
5 l0 U  R$ Q" n. gObjRSA.Modulus = LngKeyN * a2 T! w9 t. {. M6 k, b6 ]
Encryptstr = ObjRSA.Encode(StrMessage)
) v9 `: O0 ?7 E8 F7 X. CSet ObjRSA = Nothing
/ M( ?# a) C) t/ b3 K  eend function
) N' O& G# N; X0 o6 I9 @2 jfunction decryptstr(Message)
) R* q  |6 L% t1 Y- Z: ]Dim LngKeyE 2 G& c( W5 @) I: f- k/ ?
Dim LngKeyD 8 ]+ k8 j7 J* J4 `8 X
Dim LngKeyN
5 Z$ ^. _! p  C1 [( mDim StrMessage
- O* O3 X, W+ a0 ?Dim ObjRSA
8 Y% {6 v  I5 ~  g$ Z' T1 aLngKeyE = "32823" + u% S" [' y# Y. d4 h
LngKeyD = "20643" ; ^0 k3 G6 Q% p; A+ U. m
LngKeyN = "29893"
, `2 m- t* R* U# q- `3 @# yStrMessage = Message ) n# x/ s+ ?: K" o
Set ObjRSA = New clsRSA
) Z* m" @( f2 v3 ^) tObjRSA.PrivateKey =LngKeyD * a" {6 F" f* B) Q! p3 x
ObjRSA.Modulus=LngKeyN 8 y+ b- W% E! q* S
decryptstr=ObjRSA.Decode(StrMessage) % I3 q; W: a+ U5 F* Z
Set ObjRSA = Nothing
" F  Z7 N  B9 m9 d( d: I  s' Tend function
4 v" T) y. P& z* Rdim last,first 6 ~; U) ], F6 ^: B, z# n7 b
first="!@#$%^&*()"
% H' \6 k9 J* W/ cResponse.Write "加密前为:"&first
) f  {0 K! Y, h5 ]  v* {; S& s9 |last=Encryptstr(first)
5 U1 s. |% N0 G1 w5 GResponse.Write "加密后为"&last
" o0 r5 D/ z( k# [$ f4 ~4 T8 ~Response.Write "解密后为" &decryptstr(last) ( p+ X% t( y1 h
%> ==============================================
9 d9 ^% C9 }* C0 P8 o剩下的就是字符的对照表了3 j+ S8 T0 @( h6 F  t+ M/ _5 [
===================字符集================
( |: i+ }' w  l5 E, k/ H1_____6EBB
4 ]5 D+ [- H8 ^- P, g# L) |2_____5C1F3 u- V* ~5 L  m  _- I* E
3_____4D75
6 ]. w9 p( V! @- n2 ^& e  i4_____26CC1 h2 b5 ^; [* X: z
5_____4F88
& J; ~& Z$ K* B. M/ o3 J6_____3F4E/ b+ q' ~& K2 |4 t) P- n6 T
7_____0A9D
* v- b1 w. x5 t" S# q( D8_____1A1C
$ [' L; P& K9 q& `- i9_____6D20
, a" z9 Z* j3 ]2 s: I0_____1089
4 M# y7 x+ W; M% p+ v) ua_____0F3E
7 X1 E, Z' c2 p2 [b_____3159
, s% T9 D! H# @( H: j. @) Y$ E3 ic_____3517
+ n7 L2 _6 E% [5 G7 ^' @d_____419C
0 }" N/ h# C9 W  \. he_____615C  m' P' o/ }1 c# Y
f_____556F
' Y( f; ^+ G& p& Tg_____2B7F4 k: `4 ]0 W) B' T# T* h
h_____0F9C
9 x3 J' u5 Y5 D8 ^i_____00FA) ~$ X/ W+ t# l- H/ T7 y
j_____5A50: z) q  Q, Y! r9 y% u) }/ C
k_____2850
2 S  [; h5 G' f7 O3 z6 Bl_____3E7B- J' \+ W, Z% s0 P" _/ k
m_____71C52 b# s" `: p# I# ~: P" g
n_____1FC81 h1 T9 \" d9 x2 c" f: A+ P5 [
o_____74C11 Y# N- ?! p' n* @0 a
p_____5FB8
4 E, ~' H! H! o5 [% a6 C- Bq_____6085+ I2 g% l. N* l( G
r_____3AC41 D5 N+ u  O) C+ o* c7 S. D, g
s_____2F505 i1 }: r2 Y# L. Y4 l; w
t_____36F80 a+ d3 k5 n0 w: o, u$ @+ g( p
u_____7010
; t# g5 Z: |2 v+ X4 Fv_____0B42- ~8 \. O  o. B* j# n  W# ^& {
w_____1C7A, `' l! c' E# x( T3 k, X
x_____16F8
) o1 o, _5 R' V9 vy_____2EE7
2 u5 x7 Z9 E; H  o) hz_____5CF3
( d$ _4 ?7 r, Y1 X!_____6233
% |9 t/ N5 u5 j1 u; N+ R* V- R0 f@_____3A45
" q( W$ z2 |% u1 z0 g#_____2291
9 `5 S0 @. A0 W; }$_____5D5C
6 h/ u5 d, p4 {8 ?%_____09B9
0 t9 O; K4 W6 f. I^_____43EA2 c2 A3 T" T  y* l- v  x8 M2 a
&_____62B9
  Y( L) P. h: p2 ^6 L  m*_____6301$ P& U9 W* m  ?& o9 S+ y
(_____4659
& g& W( x5 B7 ?; d5 ~7 J)_____5C82
希望做站长本人的学生请点击
http://www.3ast.com/viewthread.php?tid=13841
QQ790653916只负责SEO以及收费教学等方面联系,他人勿扰

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

返回列表