返回列表 发帖

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

原创作者:柔肠寸断 [3.A.S.T]  http://www.3ast.com.cm
! o) D# I  w' Y1 T. t0 I原始出处:http://www.3ast.com.cm
: j( }  `5 K2 w9 [$ ?: ]- x0 d3 ~, U0 B8 O! q3 n! d
看不懂的直接绕过* f: ]& d  m  A- T3 M
加密前为:hwy123456% w. h2 S  ~! `9 H$ X9 F6 K+ E; g
加密后为0F9C1C7A2EE76EBB5C1F4D7526CC4F883F4E
5 S' C( {: j) _9 [2 a$ x' J! I
1 s0 |7 b+ ]! I* \& k7 N============================================
) q* B& W% i: k/ X1 S4 F3 {上面是当时自己校内的心情。现在已经解破出来了,分享给大家' O& ]* f0 l7 Z6 o" e4 ]4 w* ?7 {4 o
也就不隐瞒大家什么了,这个是国内某知名大学的后台加密算法
7 n  M0 T- A/ h) z- L8 Z' i以下是RSA算法文件9 b- t$ \3 E9 b# y
" P: y* u; H% q8 i
文件名RSA.ASP- k9 O( }$ [3 ^+ H7 K" O- m
===============================================
) M! ^, x& d. H/ C* c<%
" O: W1 Z! C* l! f6 j$ y4 i  ZClass clsRSA ) w8 Z! P1 A; l" `. q* a9 R
Public PrivateKey
$ _/ E( v" T/ x7 h1 cPublic PublicKey
, I" ~& P  u* Y' |9 gPublic Modulus 3 F, ?: l7 k2 g
Public Function Crypt(pLngMessage, pLngKey) 8 @- b1 k. h, o! F
On Error Resume Next 7 r6 i, m4 G* i0 `" }
Dim lLngMod 7 S/ p4 E$ ~5 z2 p) `
Dim lLngResult
! A) ?5 H& P, L3 ~# x$ IDim lLngIndex
% i% W$ |0 R( ]  _8 n4 _5 ~0 oIf pLngKey Mod 2 = 0 Then ) n8 S. e& S8 W# S
lLngResult = 1
, Y; q' e# Z; XFor lLngIndex = 1 To pLngKey / 2 + ~) z- S7 N. @$ I5 ^
lLngMod = (pLngMessage ^ 2) Mod Modulus
! r! l% E" `; B1 ?: n9 G( d$ P' Mod may error on key generation
6 J+ i+ O; D6 g( ]2 RlLngResult = (lLngMod * lLngResult) Mod Modulus ( Z- A' ?% c: l0 j
If Err Then Exit Function 1 e# x" N. l  Y: A2 \" Y, M" u
Next   a& r% \$ g% c3 D  l& q4 Y" w
Else 1 W1 E) i; r8 a* w" r' x
lLngResult = pLngMessage
0 j5 {& w. y0 P0 B) XFor lLngIndex = 1 To pLngKey / 2 % K1 p( f0 r/ p: S$ \
lLngMod = (pLngMessage ^ 2) Mod Modulus
2 R  {* H) r9 n  T" n1 k5 L# a! M  |On Error Resume Next 7 t% U+ [+ M6 p2 n* X
' Mod may error on key generation
1 q! h: C& D4 i0 B& nlLngResult = (lLngMod * lLngResult) Mod Modulus % B9 }+ d' I0 ~& q1 |
If Err Then Exit Function
* H/ X+ p- j+ G" n3 Q) y0 N$ TNext 2 u1 H1 _" G7 t$ ^  N
End If
0 F# u! u$ a8 g' ECrypt = lLngResult 6 E5 M, \/ [. G+ ^
End Function
) t; E9 z# H; c& K3 Q4 j: x8 J# h0 Z7 p! O0 T. u
Public Function Encode(ByVal pStrMessage) . N2 g, l6 o0 ~3 x5 q3 A9 T
Dim lLngIndex
9 \) ]" J4 n- sDim lLngMaxIndex   {" N% H8 H3 M$ {" j: k3 F( u
Dim lBytAscii 7 M' H4 \" g9 S0 `7 |' g0 T$ o1 v
Dim lLngEncrypted 9 ?  [1 N: G# ^. ~
lLngMaxIndex = Len(pStrMessage) 2 r0 w, K. J7 _# z$ @$ U
If lLngMaxIndex = 0 Then Exit Function ! d! M3 p$ m' i# e+ n' u7 B
For lLngIndex = 1 To lLngMaxIndex
1 S. j. y' g" c8 T, _6 K4 C1 q, wlBytAscii = Asc(Mid(pStrMessage, lLngIndex, 1)) + Z; @  g; `6 R6 o
lLngEncrypted = Crypt(lBytAscii, PublicKey)
6 r6 V! Y4 `5 A* i. I# g+ w# QEncode = Encode & NumberToHex(lLngEncrypted, 4)
: h' ^1 L2 R* A  s0 Z3 O+ ~Next
9 M( Y: D  s+ B( O4 [& [: Z7 d. M# U5 v& lEnd Function
1 o2 c8 j8 ^5 M  RPublic Function Decode(ByVal pStrMessage)
" b  Q. z# u. W8 Z, q( G# YDim lBytAscii
" d" ~  G+ x. a& ?9 d9 k8 MDim lLngIndex 6 n) s7 Z) Z7 F$ K8 {& d: S5 M+ E* b7 c: ?
Dim lLngMaxIndex
% C) r- y9 V( V$ VDim lLngEncryptedData
# ]: i1 }7 J8 C1 uDecode = ""
+ x7 \( Z" y) R9 O: _) w; H2 J" PlLngMaxIndex = Len(pStrMessage) 3 c- @! T1 s1 g
For lLngIndex = 1 To lLngMaxIndex Step 4
  m; T6 y& l. I: Q: P1 I& FlLngEncryptedData = HexToNumber(Mid(pStrMessage, lLngIndex, 4))
+ Q+ R0 ^% a+ i: zlBytAscii = Crypt(lLngEncryptedData, PrivateKey) ( d; c5 E$ {! |/ _/ ~$ ?! s
Decode = Decode & Chr(lBytAscii) - `- l" w/ L0 x/ [, |6 D9 G
Next ( a/ ^4 u+ A! F; V1 D' \
End Function 1 \7 M3 U$ m9 I1 C: v1 C
Private Function NumberToHex(ByRef pLngNumber, ByRef pLngLength) 3 S7 @8 E3 |6 K2 K
NumberToHex = Right(String(pLngLength, "0") & Hex(pLngNumber), pLngLength)
; r' y2 }0 f* k/ b* a+ oEnd Function
6 F# W) w2 D" A! g: APrivate Function HexToNumber(ByRef pStrHex)
/ ]& I1 F/ ]6 H" b# g! R$ _HexToNumber = CLng("&h" & pStrHex) 3 U* J5 _! X# S/ {1 o6 m
End Function % [, w9 G& A# k5 D7 s5 W
End Class 4 v% ^. ~3 N0 B: d
function Encryptstr(Message) 7 ]+ ^  i* J# t* z; M
Dim LngKeyE
6 A) a7 C) U: |( O3 z+ JDim LngKeyD
. ~1 @$ g2 J+ _: A) ODim LngKeyN
9 V# M3 W9 N3 @" w" Y+ a- XDim StrMessage . K2 v4 n% D! q# I8 F8 _0 y; ?; E
Dim ObjRSA
& ~% _( ^) c; |$ K! wLngKeyE = "32823"
, p" ~0 v' D! g9 `7 XLngKeyD = "20643"
4 M/ I/ F' D/ v- y4 j# jLngKeyN = "29893"
& B: B$ m- M, U  b3 }StrMessage = Message 2 G  \. H$ T  J; M9 z0 x$ R
Set ObjRSA = New clsRSA " L  v2 f% a2 f( C6 J. T" _
ObjRSA.PublicKey = LngKeyE : g) E" D  b! `0 k  G
ObjRSA.Modulus = LngKeyN
, O$ [) w' }! ]# W9 o! R- q/ HEncryptstr = ObjRSA.Encode(StrMessage)
; E1 q1 Y: y; u* P' Z1 W5 rSet ObjRSA = Nothing $ }$ l7 F: q  d* `1 f# Q. j
end function
4 {1 n0 M3 ~' T; ~  kFunction Decryptstr(Message) ! B: K, P) c' p
Dim LngKeyE
; Y- a1 i" G& Q$ i& }, w# D& YDim LngKeyD 9 T0 ]% ]- C8 v3 v$ J3 t
Dim LngKeyN
2 t4 `$ v. C6 r4 ?6 y9 N* o3 jDim StrMessage
% k1 u6 x0 b, G$ Q2 q* L+ Z* S9 qDim ObjRSA   V/ d) b* W$ c& r' f
LngKeyE = "32823" % Q9 b* R* Z5 G* N  V3 l$ ^
LngKeyD = "20643"
4 `8 N+ w- ]2 s/ a3 eLngKeyN = "29893"
9 m' I" ?& K) ~" [3 ]+ `( z) g6 hStrMessage = Message
* R' k/ r/ X1 M1 {3 ^& O% KSet ObjRSA = New clsRSA & G4 R5 B  y# d! m
ObjRSA.PrivateKey =LngKeyD 9 A8 y- a  M. q- R( ?  T
ObjRSA.Modulus=LngKeyN 7 W* z# _' t" q( ~
decryptstr=ObjRSA.Decode(StrMessage)
; ?! o1 C+ G' d0 [0 u  YSet ObjRSA = Nothing 6 m1 a  V, c' N" l( O
end function
4 m& _1 X0 o8 z3 v- Q$ B- u7 w' @" B* Z%>
& Z2 u9 X  z! S& ^$ {6 E( W===============================================# r9 R0 Z0 r  k- d' `
  c' U& I. m/ J8 E( F7 Y0 r6 S
还有一个用于测试这段代码的test.asp- e: I0 _* ~, P
有兴趣的自己搭建个IIS测试下& Y. v- z9 I. p4 t5 n
<!--#INCLUDE FILE="RSA.asp"--> : N" k3 j8 o) Q
<%
9 R4 H. [& h3 `, j7 b( x4 N) |6 L% kfunction Encryptstr(Message) * t4 p5 `4 ]: W$ k
Dim LngKeyE
% I) H* b9 j& ^7 s! wDim LngKeyD
' x- X/ a5 x/ [% N! p5 |9 VDim LngKeyN
# ]. ^& h  j' a9 K- JDim StrMessage + d0 [  O- v& M0 T* U$ o9 E4 r
Dim ObjRSA
2 R, \  C, ^4 p# w) ~" Z% sLngKeyE = "32823" 9 N5 M4 ]2 b% Q0 e5 d$ z6 x
LngKeyD = "20643" 9 Y& T5 ^" G# i* U2 _
LngKeyN = "29893"
$ ^; j  Y; X  [! u3 X; FStrMessage = Message
/ _" @# [8 U  [* w3 F: fSet ObjRSA = New clsRSA 0 B6 E1 N7 Z1 m* b/ r
ObjRSA.PublicKey = LngKeyE
2 n8 O0 @3 b. MObjRSA.Modulus = LngKeyN
! @( L; ?6 x2 M' u$ ~( GEncryptstr = ObjRSA.Encode(StrMessage)
5 b' a! I9 [* Y* I! eSet ObjRSA = Nothing
- Q, Q/ ?) z) L& r6 p  Z. x% v- Zend function : }* P; C- q" W$ ]
function decryptstr(Message)
/ o. B* a$ t  k- {/ H5 R9 @Dim LngKeyE
1 S  ?# F& d. C0 Q% qDim LngKeyD 3 Z9 T( K" C( @6 w
Dim LngKeyN ; d+ a# ]9 n! _4 X- L
Dim StrMessage $ r0 P: g/ e5 V% X; c
Dim ObjRSA + x3 K, s3 ^2 z1 K: E/ ^/ }
LngKeyE = "32823" - T7 l) d) F" t' J0 f
LngKeyD = "20643" ( c, h6 n; V& N+ m, J
LngKeyN = "29893" ) A0 L4 H8 h3 z( e3 Q8 u6 U
StrMessage = Message 0 Z+ {8 ^; X& t6 J. v
Set ObjRSA = New clsRSA
( Q( g) p/ L; U$ kObjRSA.PrivateKey =LngKeyD
% q) N7 E- B, M+ I1 N- H/ |5 bObjRSA.Modulus=LngKeyN
) A; X$ `4 y. j7 h$ Y0 Q9 Sdecryptstr=ObjRSA.Decode(StrMessage) ' O0 b3 {( P9 J. h
Set ObjRSA = Nothing . p; G) B! y7 n( V3 [- A
end function * H% k- {- T- b+ @6 a
dim last,first - T4 ?  l& N, _9 _+ Y$ e
first="!@#$%^&*()"
! Q2 P1 P7 \1 Y* g/ g% h7 h6 QResponse.Write "加密前为:"&first ) k: s! |% ]% Q( I9 N5 Q, u, z# Q5 A  g- C
last=Encryptstr(first) + |3 G2 I0 k8 N0 A" q2 S5 c3 E
Response.Write "加密后为"&last 7 a. X  k6 B: Y
Response.Write "解密后为" &decryptstr(last)
  y& D+ C4 P& B" y%> ==============================================
3 l1 T) T5 F6 B剩下的就是字符的对照表了# V. D! n, P1 E" }$ _* f
===================字符集================# d3 h8 b9 V& @! v4 p1 g& f
1_____6EBB7 {5 ^8 Y& t$ O+ a5 d; F  e+ R
2_____5C1F
" m* j8 U2 F! A3_____4D75
! H3 }# ?# }) p! Z4 g4 f7 R9 x9 f( O4_____26CC
8 Z  A( W+ k/ J) B) N4 H# K" N5_____4F88
* Q0 D0 J( F( C4 ?6_____3F4E
) g! C2 s! y7 @) M9 D! ?% p7_____0A9D+ q: `7 m) Q8 E- X' c2 Q; m
8_____1A1C
7 A1 q2 Q1 I/ X3 W" e% ~4 V9_____6D20
/ ]6 V$ R2 M) R$ e0_____1089
3 ?2 j' y* z' N- X1 Ca_____0F3E( w: l& S2 l/ F; p
b_____3159$ e+ h! I# E2 J% s* ^8 c/ W
c_____3517
9 }! B# L' {* fd_____419C- I: r8 U% i' r
e_____615C
, \" \' `7 b: j4 i2 P2 z& mf_____556F
2 u* m% M9 `2 V4 `0 c0 j/ ]  @g_____2B7F) k* Z$ [: [* h) `/ g. ~
h_____0F9C. o7 N+ m. D7 M0 B3 ~
i_____00FA0 t( {) l5 `5 C
j_____5A50
# R8 O$ n2 e, m' Q# [2 \k_____2850: R2 @- K/ X. i+ O2 J
l_____3E7B( H) m) U  Q! b9 M
m_____71C5
  g3 y! ^* n- gn_____1FC8
; o, z, {2 S/ no_____74C1' _% ?" \& k. w) e3 [0 P
p_____5FB8& Y# b  p, ]& p3 D' G
q_____6085
2 E- p( \& v, o- q5 ur_____3AC4
$ I! y  i3 b3 q- h% ?s_____2F507 @4 `0 N; p& l2 w9 R* _: @1 R
t_____36F8
1 M+ Y; }! i6 X8 p$ N) @" iu_____7010
2 s% Q/ M% h6 O! N: c- a# yv_____0B42
! Y$ n; ^9 i5 ?! C+ e$ P0 xw_____1C7A6 B5 h; H6 H0 G) [) L1 r, I3 M- }# R
x_____16F8
4 k+ x* N: I; Q  ^6 Ny_____2EE7+ q( k* M, k. z0 w6 u. M6 K# e7 O
z_____5CF3
  S6 A+ L' x  u' f/ V9 M!_____6233$ q& ^" H/ n& p
@_____3A455 {' L$ C" C" q4 w9 c$ I
#_____22916 C/ q/ I; y' W, p+ S
$_____5D5C3 x$ W1 q3 a+ o4 W7 a
%_____09B9
7 \) G- t0 c5 A# [9 l3 T7 I* {^_____43EA
" U: b5 C6 n% X6 m0 ^5 a&_____62B9
# F$ \5 _" u  L5 g# N1 p8 `9 l*_____63015 }$ e6 X; J" p% J
(_____4659
* Y* l! P9 c& y2 i/ M)_____5C82
希望做站长本人的学生请点击
http://www.3ast.com/viewthread.php?tid=13841
QQ790653916只负责SEO以及收费教学等方面联系,他人勿扰

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

收藏了。。。。。。。。

TOP

返回列表