返回列表 发帖

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

原创作者:柔肠寸断 [3.A.S.T]  http://www.3ast.com.cm
# T+ T5 j% H( k5 v- V9 H原始出处:http://www.3ast.com.cm
/ j! T0 _" g1 W7 j9 s- n. ]
/ I2 L( s9 B$ ^6 I看不懂的直接绕过
  X) O8 U  H5 L* {& U加密前为:hwy123456' K, m! r  q2 m6 j7 ]/ {/ \, ?4 _+ k
加密后为0F9C1C7A2EE76EBB5C1F4D7526CC4F883F4E
  X6 Y& r' e3 j7 c( P( m2 Y4 q7 P  ]& s( G
============================================& o/ `* z  j8 G) k6 u$ s" n0 V# w
上面是当时自己校内的心情。现在已经解破出来了,分享给大家
/ o% H2 E0 F2 e9 H也就不隐瞒大家什么了,这个是国内某知名大学的后台加密算法7 y( ^" P; k/ U  R6 A
以下是RSA算法文件3 s& d3 _  _3 B. H! ?) u' G+ }
5 u. P! v8 C3 a
文件名RSA.ASP+ G4 N) Q/ o) b: N/ _+ F$ q
===============================================& l% C1 O1 Z4 ~& [# ~4 j5 l
<% & D  K+ C- ^5 O+ s8 E/ t) |* C
Class clsRSA   D0 r! ]' v4 F. Y1 G1 m3 Q
Public PrivateKey . H0 o! d  e: z" ^$ Y' w$ X' ?
Public PublicKey * J: n! A# @  R* ~" W$ j
Public Modulus * l! d. C; {( Z
Public Function Crypt(pLngMessage, pLngKey) 4 }4 E8 s" Y% @# K4 w$ f
On Error Resume Next
7 X" A: ?; r* V! u+ {: a+ H& xDim lLngMod
/ T9 g* z6 _! U6 NDim lLngResult 8 F/ H1 _* H  G1 u% F" o' @
Dim lLngIndex + {/ Y- ]; _$ m
If pLngKey Mod 2 = 0 Then
$ m5 A' r+ Z; {# I5 u, K5 mlLngResult = 1 & S- i9 r, W8 h/ t) |
For lLngIndex = 1 To pLngKey / 2 5 I) y% L0 A. z1 e2 W) q1 p
lLngMod = (pLngMessage ^ 2) Mod Modulus $ `# K( w4 S/ o9 W3 ~0 U
' Mod may error on key generation 0 X# k/ {! ^( l% h2 |( o* S
lLngResult = (lLngMod * lLngResult) Mod Modulus
; e& T; @, P, @If Err Then Exit Function % ]4 K% h0 d0 B$ k, m+ ?
Next
7 n( A9 a7 `. s9 M/ B: EElse
* f: p, s  J; }lLngResult = pLngMessage
1 t  M9 {" X5 f8 `& ^7 I9 Z' Y" O8 BFor lLngIndex = 1 To pLngKey / 2
; p$ M: a2 r9 a: Z, LlLngMod = (pLngMessage ^ 2) Mod Modulus
, o) ?( t5 ~; Y# V; h! F$ JOn Error Resume Next
% e. v; Q' D  F2 F+ ]2 |7 S3 K' Mod may error on key generation
5 e% \: B+ Y: T9 I% ~lLngResult = (lLngMod * lLngResult) Mod Modulus + J5 r, s0 ~' A8 w
If Err Then Exit Function
9 J$ q2 V% x8 t/ @) }Next
. I2 R! `; x9 h, N* z4 o$ u0 H0 ~End If 8 h4 }7 i. n) |' }; M' E' a0 ^
Crypt = lLngResult 3 q; Y$ L: ?4 K+ g, _5 o; }
End Function( {4 w+ |, I+ g: N3 w8 m* {4 L, ^

9 E) _( S9 ]6 F: r- w4 C: W% ~Public Function Encode(ByVal pStrMessage)
$ h& j% U/ b: G( M! uDim lLngIndex
$ \3 e# F& M7 _  @& Q6 ^  z% u: |Dim lLngMaxIndex
9 U5 v8 }! L: RDim lBytAscii
/ ~8 @* e+ Z# |2 z4 G5 {- JDim lLngEncrypted   p5 `" Z: ]: T
lLngMaxIndex = Len(pStrMessage)
8 `3 o# p8 \$ ~1 A0 v, s9 H' q" kIf lLngMaxIndex = 0 Then Exit Function
5 f; H+ O! p7 L! GFor lLngIndex = 1 To lLngMaxIndex , _6 E- F: o: E: p* U: n' m3 x
lBytAscii = Asc(Mid(pStrMessage, lLngIndex, 1))
, ?: A2 g, \3 l' q- slLngEncrypted = Crypt(lBytAscii, PublicKey) 7 p; R7 @! ~* B$ L
Encode = Encode & NumberToHex(lLngEncrypted, 4)
+ q) h8 F6 D5 Y: f8 l& _Next
1 q) f3 G0 y8 BEnd Function
% u" _+ m! F8 {1 j8 U" yPublic Function Decode(ByVal pStrMessage) . n! X( ~% ?% O
Dim lBytAscii % f6 P& K& ?0 k* u( c1 w, @
Dim lLngIndex ( B# ?8 ?% _" Y* Q7 b7 f" @1 T
Dim lLngMaxIndex
5 D; Y; _1 _: k4 }  CDim lLngEncryptedData
3 L9 U, G. A& l( ADecode = "" - B0 y1 u8 i* M& {& O* g% [
lLngMaxIndex = Len(pStrMessage) 5 e- B+ T$ M$ k* N. Z3 }
For lLngIndex = 1 To lLngMaxIndex Step 4
" S$ \% W8 p4 ~; a+ YlLngEncryptedData = HexToNumber(Mid(pStrMessage, lLngIndex, 4)) # G8 p/ ]. d6 R( `* W6 @5 S1 j( A
lBytAscii = Crypt(lLngEncryptedData, PrivateKey)
8 _- A! e# r+ l6 @Decode = Decode & Chr(lBytAscii)
8 {% v+ M& s) I" M$ X/ fNext 1 _; {2 R/ S% q* N9 Y9 I0 F1 e
End Function
$ r" W+ D1 {) c/ l( H; G% o- u6 {9 WPrivate Function NumberToHex(ByRef pLngNumber, ByRef pLngLength)
' Q( e# y  f# B6 p: p3 W) {; n- iNumberToHex = Right(String(pLngLength, "0") & Hex(pLngNumber), pLngLength) 9 H7 ?4 y+ [% {$ Y& [9 U4 \- ?1 c& a
End Function , b4 \9 {: J1 x5 Y
Private Function HexToNumber(ByRef pStrHex) ( T2 S( s' K" ~: w: s
HexToNumber = CLng("&h" & pStrHex)
. F* {2 |% ?' L# c8 I4 VEnd Function 9 I4 ~$ t8 B0 \& J* u9 p
End Class ) S8 `6 Z. d  `, w
function Encryptstr(Message)
4 M$ P1 C: ]0 v' }8 S& D( L8 XDim LngKeyE - _# N; i( y2 l1 a
Dim LngKeyD
; d) c6 a4 j( Z. [* A! @Dim LngKeyN 9 O! z# g1 m& K* {! q8 ^
Dim StrMessage 8 W; [$ e" Y$ b) o: \
Dim ObjRSA
' i5 y& D4 j8 p  u- f' }LngKeyE = "32823" . i; b7 q* a7 ?0 Y$ F  ^1 K0 q; |
LngKeyD = "20643" + l" t/ ~6 Q( F( u! Y2 x8 M
LngKeyN = "29893" ) c- J3 T$ @+ t/ o
StrMessage = Message 6 Z. t" E  D( J( \2 q9 s
Set ObjRSA = New clsRSA : O9 p/ x; ^5 m8 y9 t' l
ObjRSA.PublicKey = LngKeyE
3 f% M( U, I' {" d; c# D# ^ObjRSA.Modulus = LngKeyN $ ^5 f! R& H/ I0 z
Encryptstr = ObjRSA.Encode(StrMessage)
+ k- ?" Q% S. x6 \Set ObjRSA = Nothing 0 e6 C9 x" u, W+ \+ k3 n
end function3 E! K* f  G1 I
Function Decryptstr(Message) 9 \, z8 Y( P4 _! t2 b
Dim LngKeyE ) ^& P" A2 q9 D1 A1 S- x
Dim LngKeyD " T9 p& m/ D6 @8 ~
Dim LngKeyN
( e4 x) M' S8 U* p! ~5 A  ADim StrMessage + x9 q- {1 T% t6 O7 T; ]* N' @* a- ?
Dim ObjRSA
% ^5 T% P6 n9 W3 XLngKeyE = "32823"
2 h: ]( n' x9 x. P5 PLngKeyD = "20643" 3 b5 B2 f- l7 w8 e1 t+ Z* h
LngKeyN = "29893"
& n' r+ @! j( W- g- [StrMessage = Message
% u! d) V2 v/ N3 ]/ \- O4 gSet ObjRSA = New clsRSA : V0 N9 ~0 a5 n4 _1 U) X4 Q
ObjRSA.PrivateKey =LngKeyD % b/ D5 ?5 K3 v' W% X( f
ObjRSA.Modulus=LngKeyN
( z! G4 l; j1 {decryptstr=ObjRSA.Decode(StrMessage)
" I% Q6 T% L& G$ u/ E3 g3 jSet ObjRSA = Nothing - W/ \+ @9 M% m6 q0 ~( o( @3 @, {- V( Y* A
end function 1 V! u- t  z$ g/ r6 k3 v) C5 A" K
%>
4 m( T( l' B' z8 k2 X* q/ d  T===============================================
4 ]* V; j' j4 b0 s+ L: {
2 L( r4 k" E7 w* f# d. W* K还有一个用于测试这段代码的test.asp, Q. O" P' x+ X
有兴趣的自己搭建个IIS测试下
$ H# u, J5 R( Z) v5 r# K<!--#INCLUDE FILE="RSA.asp"--> 6 `/ b7 ~* w+ ~% k6 f9 g
<%9 l$ w7 y. g0 G% |0 y
function Encryptstr(Message) ! M6 P, y& g' I2 C: N9 v
Dim LngKeyE
  w0 V8 m% k* ]! fDim LngKeyD
6 e& r! h% p! n: P% _! uDim LngKeyN
; b; p; j; O& dDim StrMessage
  f, g! @% n; q; Q( U3 z/ nDim ObjRSA
( j% {( T. c, ?9 NLngKeyE = "32823"
" q! y7 V% s' y& aLngKeyD = "20643"
  |& z. T. k" X3 l/ \$ `) \LngKeyN = "29893"
4 D; _9 r5 Z1 X" s) D" l  I) PStrMessage = Message
" J: Y1 O$ y) e& h* S8 WSet ObjRSA = New clsRSA , J: q  _) C/ a1 F- D
ObjRSA.PublicKey = LngKeyE 8 c6 C8 I, Q7 K
ObjRSA.Modulus = LngKeyN
6 D" O# A1 b; u: }% [* A' [% n) ~: m* NEncryptstr = ObjRSA.Encode(StrMessage)
- d8 m5 i6 D5 K/ q2 s( L% h, NSet ObjRSA = Nothing " f% F4 I5 C& _1 {
end function / n5 z( j2 b9 x0 F5 I$ J
function decryptstr(Message) 5 X* Q1 H8 ]) q5 J, L/ k5 ~, g
Dim LngKeyE : y3 `3 t4 ?4 y
Dim LngKeyD * R/ R5 B; l) T: V! j/ o9 R
Dim LngKeyN
& }7 L8 Z. _# _% n* wDim StrMessage
0 y) M4 M! `; d) o' ZDim ObjRSA
1 G' M% O8 A+ BLngKeyE = "32823"
' u  q8 ~: \6 v! {LngKeyD = "20643"
/ a$ A! [/ r. d- tLngKeyN = "29893" ' t: ^7 J- V/ D: ~+ C0 @8 s
StrMessage = Message 9 L6 j# E7 D7 O$ k2 C
Set ObjRSA = New clsRSA ! s. O- M" J( j+ X& Y9 e
ObjRSA.PrivateKey =LngKeyD   C3 z9 L" b8 l( }
ObjRSA.Modulus=LngKeyN
; ^, s7 A! Z- j9 A4 V( x- Cdecryptstr=ObjRSA.Decode(StrMessage)
/ w) c9 {& X, n( o/ lSet ObjRSA = Nothing 0 i, T5 V* j/ A. j: U- H2 s' ?: L
end function 0 H  P3 S: e* n+ W' O) M
dim last,first
1 u* j+ I- Z, e* _- i( cfirst="!@#$%^&*()" ( N/ N5 Z9 B; D, q0 e
Response.Write "加密前为:"&first - u# j# x. z2 v1 U
last=Encryptstr(first) $ y" n* j2 @! W& N9 E
Response.Write "加密后为"&last % F0 y3 d0 u% U: U/ r. H4 o* d2 k
Response.Write "解密后为" &decryptstr(last)
' k% n$ D/ o2 G; y%> ==============================================
0 m$ v# h+ t7 q$ P3 P# p0 z% I# y  o剩下的就是字符的对照表了
* L' F* p, j6 U- E1 f" {===================字符集================: Z9 f' m0 s  c3 [* S, D) |
1_____6EBB
; ?4 K+ X' z0 A9 G2_____5C1F& W( ?! a' P. {2 i- M9 Y( H
3_____4D75
) t% D3 S+ C' [8 g# C, v4_____26CC
/ e2 V. I/ R  n! B$ B3 X5_____4F88
2 X' a2 \. a9 [2 G& z6_____3F4E5 O7 r0 z3 q& r7 j
7_____0A9D
" p. ~( ^. e) w) m8_____1A1C; M$ m5 @+ ~4 t" g6 f
9_____6D209 j" |7 I$ o9 c  W5 ?; x2 h( T$ p
0_____1089
; t) |1 ~" g1 r5 ^# _- ya_____0F3E
3 b0 q, {1 K  `3 Eb_____3159
0 e! \2 _! M9 ~5 b9 C' Lc_____3517
6 j3 W4 j5 M5 C) E/ Y5 v* Y8 Ud_____419C
* y- X4 D- J' E/ a: C7 ~/ q: n* ze_____615C) I- C- V# I2 y1 k- Z
f_____556F
% ?7 Z! w- G* @# G* E3 C* P5 eg_____2B7F
) a  l# F7 [- v! d3 N' P! t0 H" I2 Wh_____0F9C
+ v& X& T. s$ f% `i_____00FA+ ~$ U, r3 T; j
j_____5A50
; x) |0 F' X% V" S1 n$ jk_____2850; _/ R+ n) |0 \. F5 h  D3 l6 Y% T1 E. i
l_____3E7B7 p3 F3 F3 B5 {" {! Y6 ~1 H* F
m_____71C5
" {, j5 b! F- r- g1 Ln_____1FC8
3 q$ {6 {2 `9 B" Fo_____74C14 K# G: n! g2 Y' d- L
p_____5FB8" J; y! j" Q3 [; \" d
q_____6085
" Q9 z! B' ^+ `5 P) T0 B% U; y" ^r_____3AC4
9 Q" q8 O. |/ X) v: Bs_____2F50( S2 L# v. c9 j6 \5 v& p3 f
t_____36F8
  i7 M; ^, ~6 t( z1 x$ W8 xu_____7010
6 l$ {. M- N$ D. Q: a5 a+ F5 r8 Zv_____0B42
) s( i; ?3 a+ `* u, tw_____1C7A
: ^7 P4 C9 n& J' Nx_____16F8
- f7 e; F4 B7 l( C. ky_____2EE7
# s% Z5 M# k2 a. w  oz_____5CF3
2 P1 Q  e* t, m" F* V- X!_____62337 V9 w4 {) G: D" I$ f% d
@_____3A45! X: }- N. m' s! @4 o
#_____2291
; T& E8 Q( [3 w9 C0 o: A$_____5D5C2 s0 G: i' ~, d8 C! Q; t8 q
%_____09B9
6 g7 G5 Q8 d$ b( i  D& m^_____43EA
$ C1 {8 ?1 G: n+ }0 n&_____62B9& J3 @. f& f3 U+ y' T7 V% ?* e5 R: [6 i
*_____63016 C/ Q+ b6 H3 j' O( f! G
(_____4659
: k; H! r8 m+ o! Z7 ?' c" b)_____5C82
希望做站长本人的学生请点击
http://www.3ast.com/viewthread.php?tid=13841
QQ790653916只负责SEO以及收费教学等方面联系,他人勿扰

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

收藏了。。。。。。。。

TOP

返回列表