返回列表 发帖

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

原创作者:柔肠寸断 [3.A.S.T]  http://www.3ast.com.cm
- U1 @  [8 `3 W" \6 }原始出处:http://www.3ast.com.cm! j& `/ k2 W8 R
) d+ w( L) ~7 o9 |9 J# E; Z$ {
看不懂的直接绕过
9 q0 P" d' L5 M* e# [# S9 V. y加密前为:hwy123456+ U% B3 C: J* X3 @2 b/ d1 |
加密后为0F9C1C7A2EE76EBB5C1F4D7526CC4F883F4E
- l! }3 ?/ \! y  L% d' d
: w* X1 x6 U  ~9 }2 `/ v& `============================================+ e6 [# J8 W2 W- t
上面是当时自己校内的心情。现在已经解破出来了,分享给大家
- Q* p3 ]: t- D9 l/ m+ j1 O也就不隐瞒大家什么了,这个是国内某知名大学的后台加密算法* D* D0 n0 i! G. {* X% z9 t) x' A
以下是RSA算法文件
: `, r: T2 @1 }! r. r+ k" U' E8 q$ J( J6 k
文件名RSA.ASP
4 p7 S- F+ d" Z5 W$ T, q0 E& a===============================================
' e' p- C% t4 F- t<%
8 y% _* C# b  X! MClass clsRSA
  f; s! }0 E! q& GPublic PrivateKey , Y7 ~4 o! r6 ?$ J% f/ I2 @
Public PublicKey 5 [6 n0 `6 h9 ]1 G
Public Modulus
" v, z* b, c! P& h- F$ ^! PPublic Function Crypt(pLngMessage, pLngKey)
. }# P7 |" H- }9 ~6 W4 }! fOn Error Resume Next 4 ~/ O- i! I8 o. n; e2 o
Dim lLngMod   P3 z& \( e7 X
Dim lLngResult
$ x9 B, I, u+ W1 }Dim lLngIndex
, h' D9 y+ T9 t# c+ CIf pLngKey Mod 2 = 0 Then ; z$ o. u& k$ e9 R; `0 b( j1 b, H
lLngResult = 1
+ O6 B: \" ^, z5 ~For lLngIndex = 1 To pLngKey / 2 ' T* L; W" O& p7 Z1 l9 p
lLngMod = (pLngMessage ^ 2) Mod Modulus 4 l0 l! j& r% Q- g: E
' Mod may error on key generation * o  h, f4 X3 n! f' W- U$ Y2 i
lLngResult = (lLngMod * lLngResult) Mod Modulus
6 I( X- g" ]$ S& tIf Err Then Exit Function   e# L; i6 f7 ?; `- ~
Next # v( K! E7 W" L$ t3 F6 R  b
Else + f$ X8 F! c, z2 `- Z# c# `
lLngResult = pLngMessage ! a$ f; O/ h( |: r, a5 E7 v+ a
For lLngIndex = 1 To pLngKey / 2 5 h: o4 M, S' J$ }1 H7 Y/ l* e
lLngMod = (pLngMessage ^ 2) Mod Modulus # `4 N; m# G& a7 |# ^0 t2 Q
On Error Resume Next
8 U  k$ t" S; E/ ]& }- h* K' Mod may error on key generation
( G$ E- K# D' J" j0 p; a) F" d3 ylLngResult = (lLngMod * lLngResult) Mod Modulus % E4 Y9 X4 Y; i8 P5 L9 q- L3 H0 ?9 |
If Err Then Exit Function 0 W1 V* }/ I! s0 J1 I1 Z3 A/ l" B1 B
Next
6 l5 V1 o5 C4 x1 @: e. O7 V# @End If
7 `3 |2 I' N7 M. g% pCrypt = lLngResult 1 X! a8 H3 F- n: a
End Function$ P2 I8 x# |2 T3 p% h( X
" i8 q5 k9 J4 F8 s5 r) k* q! q
Public Function Encode(ByVal pStrMessage)
8 O( ^( t% Q3 R5 v9 b0 SDim lLngIndex ' i& b' G% v3 Z% {6 D
Dim lLngMaxIndex
, R* Q( v& [: @1 s5 aDim lBytAscii
2 G7 p9 W+ S& w+ ]4 c8 l6 pDim lLngEncrypted , p, N! W* U! ^* u
lLngMaxIndex = Len(pStrMessage) # E  J5 z# B+ q
If lLngMaxIndex = 0 Then Exit Function
/ Y7 A) \) [2 v9 vFor lLngIndex = 1 To lLngMaxIndex " E& s: ]; J- ]  P
lBytAscii = Asc(Mid(pStrMessage, lLngIndex, 1))
- l) F' f. o4 n- ulLngEncrypted = Crypt(lBytAscii, PublicKey) 1 J* s0 w/ g1 t; b0 w7 t
Encode = Encode & NumberToHex(lLngEncrypted, 4) ; M8 B; w& S- K9 [) J
Next 9 |) t% O9 G5 Q* m# {$ Q7 Z& n
End Function   f/ \6 c0 ?8 L1 y8 Y
Public Function Decode(ByVal pStrMessage) 8 M: P& s# Y9 _, N) `
Dim lBytAscii
( f" C3 D, H7 I  L, tDim lLngIndex   E! v4 C7 I9 D; T1 K; J" k
Dim lLngMaxIndex
8 I6 P5 \9 x- e1 U' B8 j$ ~Dim lLngEncryptedData & i0 C. l  R- C. c4 R
Decode = ""
, ?) A* ]5 C$ T; Y) n5 flLngMaxIndex = Len(pStrMessage)
& c2 U& R! n0 U/ KFor lLngIndex = 1 To lLngMaxIndex Step 4 / o  f! X( j; L, D) U, K: H* W. O/ R
lLngEncryptedData = HexToNumber(Mid(pStrMessage, lLngIndex, 4)) * y; `8 V1 @1 T
lBytAscii = Crypt(lLngEncryptedData, PrivateKey) ( m/ E9 }' C* ]5 u! g* B8 R: S
Decode = Decode & Chr(lBytAscii) 3 L# o' ?: v0 [! D1 A" S) G  [
Next
( t8 D! L7 X. d7 W9 Z3 V* TEnd Function
1 d7 w" f+ D) f9 XPrivate Function NumberToHex(ByRef pLngNumber, ByRef pLngLength) 6 T9 e1 l" c8 ~
NumberToHex = Right(String(pLngLength, "0") & Hex(pLngNumber), pLngLength)
  l6 I, L9 O: YEnd Function , t" w% p1 V/ y: X2 r: i
Private Function HexToNumber(ByRef pStrHex)
+ k  u0 A. u3 q, K7 HHexToNumber = CLng("&h" & pStrHex)
2 `/ w$ j$ L- TEnd Function , g* R$ d9 r  w# W
End Class
8 W4 ~. ^7 e+ E7 {3 ^6 V* _8 mfunction Encryptstr(Message) " s, M- u+ v& c6 @5 R9 D3 [
Dim LngKeyE
) V. c/ q( r/ E( n3 X' ^8 MDim LngKeyD
+ A3 O- w( o2 A1 o- S: f; D/ bDim LngKeyN 3 r1 V! L  _* {0 {0 q
Dim StrMessage " ?( g* K+ `/ a3 o% b9 \
Dim ObjRSA $ {. ~; k) N1 h" f1 e
LngKeyE = "32823" ' e8 ]8 P# C/ F" v7 h( w$ r3 D
LngKeyD = "20643"
5 _$ [* m; b: s& \LngKeyN = "29893"
4 u: U4 W  P: N& X- C3 r  H" V8 t: y5 NStrMessage = Message
0 x5 b9 F% j, o7 L8 ^Set ObjRSA = New clsRSA
! U; T' T/ s. T) [# c; O9 ZObjRSA.PublicKey = LngKeyE 9 _* i- M. o( p7 K# a; \
ObjRSA.Modulus = LngKeyN
9 [% e( F% }  L5 \% \0 ^( ?Encryptstr = ObjRSA.Encode(StrMessage) 7 z7 o" x, R: Q+ X) g; j" c  W; H
Set ObjRSA = Nothing
( l3 C5 D) A7 M  ^. \3 R7 ^$ Lend function. W% u) n5 g7 K5 F" R! w. F& ^
Function Decryptstr(Message)
& T4 E" V0 K& T9 k6 M/ {5 GDim LngKeyE , A# z3 m4 {4 ?1 ]3 S
Dim LngKeyD : J1 l+ h- b% o% {
Dim LngKeyN : O& s' O. f$ D* n
Dim StrMessage
+ f9 Y- N( t) Y9 F* }- a7 bDim ObjRSA
- Q% \" G% u& r8 F! Y! S3 A9 yLngKeyE = "32823"   ?5 @! t5 n' A! I$ q& N- H$ k
LngKeyD = "20643"
5 o0 q& `/ ^- W' m# rLngKeyN = "29893" 9 S& ^5 P; ^1 ?4 [& H
StrMessage = Message 0 K. m9 J1 S8 ?* V" ]) L2 H2 U% d/ n& v
Set ObjRSA = New clsRSA
+ J8 }. u  V) J, ~ObjRSA.PrivateKey =LngKeyD
( d2 P4 \5 r' }5 g1 h4 u2 dObjRSA.Modulus=LngKeyN 6 I6 w+ W+ o$ X- b/ m2 k. B0 w
decryptstr=ObjRSA.Decode(StrMessage) * V/ F5 S( k( N# i+ L4 R6 P
Set ObjRSA = Nothing
; b+ a; i: `2 C& G# p6 ]8 ~end function
4 |0 h8 H' D1 u( d9 F3 c( b0 T%>% V* [. B' l4 K2 I  a+ L6 {
===============================================
  L" s5 \/ L8 p' A2 K; S) T8 n+ R! F0 Z3 Y) [! S8 s- E8 Z
还有一个用于测试这段代码的test.asp
$ e- f9 f8 I# M有兴趣的自己搭建个IIS测试下
2 z" I4 |3 l4 d/ S! @<!--#INCLUDE FILE="RSA.asp"-->
- o2 Y0 A% b% L7 b% K  h<%# o$ V- `$ F. M: h. Q2 _" _( @
function Encryptstr(Message)
3 n5 Z- `$ O  i- P  uDim LngKeyE
, f2 r# C. r# I: s, d  H7 \* ZDim LngKeyD
1 i5 [8 {* x" iDim LngKeyN 5 c  v1 D& l4 f4 W) c
Dim StrMessage 5 B4 x/ _7 Y$ {+ m/ {. E
Dim ObjRSA
% A: M+ a2 n) ?+ v) MLngKeyE = "32823" - c5 X5 B# I9 W4 L
LngKeyD = "20643"
* _: f7 G2 l0 D. ~5 K9 v9 kLngKeyN = "29893" ( n1 l1 V# V" `. M) v4 a3 R9 O* O& I
StrMessage = Message
& t7 y& q0 z' h9 ?! Y% ]& \Set ObjRSA = New clsRSA , G2 J  S' a! _6 ]
ObjRSA.PublicKey = LngKeyE
" I. Y8 ~2 g' n/ v+ x' h2 z& uObjRSA.Modulus = LngKeyN : o8 @$ t8 l" f. o7 I4 z) G% I
Encryptstr = ObjRSA.Encode(StrMessage)
# I5 C* h! m5 U1 P! ^, u3 }2 iSet ObjRSA = Nothing
: @& t2 Y8 ?" ^/ r& C4 aend function
/ ^2 K. z! v, s$ Zfunction decryptstr(Message) . H6 R% J( g  O; _3 {
Dim LngKeyE
6 H$ \+ K  z7 m4 r( zDim LngKeyD * z( ~: h8 `; d2 |
Dim LngKeyN
3 `* U9 ^0 e  ^& g( c; e& U* N% uDim StrMessage ! Q* ]0 o3 i' e2 |: K" z& v
Dim ObjRSA & K, v% \; D- x: {
LngKeyE = "32823"
/ V" n" O- b% A5 |LngKeyD = "20643"
- _" e# p2 q$ K, g1 qLngKeyN = "29893" : ~1 @/ h/ \6 T9 Q: }  \+ d
StrMessage = Message
. t! E/ N* z6 q1 [/ HSet ObjRSA = New clsRSA
/ r- W6 w, }: q$ t$ @1 AObjRSA.PrivateKey =LngKeyD
3 [( u% v6 D! c# c7 MObjRSA.Modulus=LngKeyN 5 H/ V4 B- e0 N( L& Q
decryptstr=ObjRSA.Decode(StrMessage) ' i  H% a, k. a+ z& n& N8 I( s' }3 W
Set ObjRSA = Nothing
6 }  k% N8 {" B# c- Kend function
1 R) }0 O2 ?5 ^$ @dim last,first ! B' Y. q) f% i0 A7 L# P
first="!@#$%^&*()" ; W7 [5 P% ?0 p2 F% z+ ~
Response.Write "加密前为:"&first
& Q3 j1 o& b! e; m2 H' y2 O; E, Z% Alast=Encryptstr(first) - D* [6 P/ O1 I; Q$ v
Response.Write "加密后为"&last 0 g. K- S  M% l: c1 n4 F. g0 [
Response.Write "解密后为" &decryptstr(last)
- A, T) |. n6 r3 x  S! N/ U%> ==============================================
' n" }$ V9 R# ?8 m8 h剩下的就是字符的对照表了4 p0 y7 c0 e( g' e8 o' K6 q+ c$ y
===================字符集================
- u. d% P& D9 m6 q; d  {- O8 l1_____6EBB
' h" m+ h) S  P; S# ~0 `. G2_____5C1F, v$ V* O0 U! Y0 m0 a+ A
3_____4D756 j0 c, l: A- b2 u3 g$ ], W
4_____26CC* o5 O  f8 S2 w& d$ H0 u
5_____4F88
/ r- [! ?& V* k* U5 Y/ p( O( }" N6_____3F4E. B; m$ |. c; G: Q  m% n
7_____0A9D7 q0 z1 l. @/ H, l8 c
8_____1A1C
. {4 b: d  F$ [3 h8 T( V2 Q9_____6D20
9 l7 U& W/ W4 F( W0_____1089: {$ V! `( ^; Q% g' L4 ]5 t
a_____0F3E
% O; l9 T* M0 Tb_____31595 }: U3 V; ~9 `1 x6 v7 R
c_____3517
, s' V0 ^0 I- r% o' ^d_____419C, Q( G; m: Z/ p+ U- E! ^
e_____615C
, S" N1 t0 ~" G: `f_____556F
( s0 M" C- K/ W6 {) Qg_____2B7F' N" e% z& X9 U- r! L. I
h_____0F9C
  c/ u% A: r6 [3 X0 d4 t+ o9 T; Gi_____00FA
# |# x4 J# O& v- t4 c& J1 P+ v6 Oj_____5A50
' e, N" S+ N% h% B. `k_____2850
& ?. `: o8 @/ d' D5 \l_____3E7B
/ B* }7 e& p6 ?! p; Em_____71C59 F1 I) _* H7 |# G
n_____1FC8; @2 l" C. C3 z0 }8 n
o_____74C1+ m, m, J& {( z/ ?/ P
p_____5FB8+ [* Z! w( o1 W6 N8 ]* {
q_____6085: V+ ?! N: T+ r( H9 Q8 g
r_____3AC4
1 V* e4 {: u! J" k# b! P& L# Us_____2F504 |6 f, m. i4 e& G9 f( m
t_____36F85 S; X) ?6 O9 ^: N
u_____7010
+ s6 m4 o/ d- Z" _& h5 V" E8 M0 h* n: v, Zv_____0B42" H+ I9 {7 `, g0 n7 p: k' B
w_____1C7A- r* U) ~( y( ]. f0 Q
x_____16F8# p4 k& [) g5 F. @0 X
y_____2EE7
2 @5 O0 O! X3 j- \! T- Sz_____5CF3; X% ~$ `' i+ L; G/ `
!_____6233
8 A5 A$ L# k0 z$ q1 Y3 T0 U1 T$ _@_____3A45
6 |! w8 G: m8 E1 R- E3 d#_____2291
3 o9 G+ d. Q: E1 }; c* _$_____5D5C6 D1 }4 Q9 C' b5 F
%_____09B9: E( I5 K  J; o0 j: h4 r
^_____43EA6 x# S- {" M; t, P8 a1 s
&_____62B9$ e, F6 L8 }# @" X% I1 w
*_____63018 `' E# Y! C: c2 m+ K% F
(_____4659
& i. k, s+ [. Q/ I0 [/ O)_____5C82
希望做站长本人的学生请点击
http://www.3ast.com/viewthread.php?tid=13841
QQ790653916只负责SEO以及收费教学等方面联系,他人勿扰

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

返回列表