我的日常

登录/注册
您现在的位置:论坛 盖世程序员(我猜到了开头 却没有猜到结局) 盖世程序员 > javaWeb UKEY验证类似网银解决方案
总共48087条微博

动态微博

查看: 8435|回复: 1

javaWeb UKEY验证类似网银解决方案

[复制链接]

326

主题

72

听众

999

金钱

实习版主

该用户从未签到

优秀版主

跳转到指定楼层
楼主
发表于 2014-09-05 15:32:16 |只看该作者 |倒序浏览
登录协同工作平台安全解决方案

% f' M1 P- W9 d; v
[摘要]公司领导说登录验证的安全性如何保证,建议采用UKEY验证类似网银解决,调用第三方YT公司产品。
解决方案:
; e) N5 Q2 Y4 H8 T9 @
前端页面:
  1. <embed id="s_simnew61"  type="application/npsyunew6-plugin" hidden="true"> </embed><!--创建firefox,chrome等插件-->
    ( }& ^) f8 {2 o6 _: v& d
  2.     <script  type="text/javascript" language="javascript" >
    9 |6 X* [! x, c5 \4 N
  3.         //加载皮肤
    $ B5 [3 o4 _1 g' x3 x: Q3 G  ?! H
  4.         var setTheme = function () {7 d; e) g2 y0 R+ L9 ]
  5.             Ext.net.DirectMethods.GetThemeUrl(cbTheme.getValue(), {. W" S. z/ G3 t  B! D5 t) M2 s7 v
  6.                 success: function (result) {
    & q2 f7 l$ }! @8 @1 X# n
  7.                     Ext.net.ResourceMgr.setTheme(result);
    4 Y; m3 j4 n, H( U4 g7 o  P
  8.                 }
    3 Q4 |  y4 _6 Q4 s# V" u
  9.             });
    , i5 R$ }* c0 ^+ W' Q5 Z: g
  10.         };
    5 |5 |. n6 K% a5 T
  11.         //回车出发
    9 F, C9 n1 z$ O
  12.         document.onkeydown = function (event) {- k8 A  R5 R) k4 r* S2 S' t; C
  13.             e = event ? event : (window.event ? window.event : null);
    ! b5 o. l" e. x. U) k6 T
  14.             if (e.keyCode == 13) {, ?2 Q& Z1 g  ^# Y% r
  15.                 //执行的方法  / `- }$ D# F9 d$ d
  16.                 //alert('回车检测到了');# F2 h  Q5 @1 _
  17.                 //Ext.net.DirectMethods.Login();- E# E  k3 R. t  a
  18.                 login();; X( V) l. {% ~7 Q7 m  L; Y0 z
  19.             }" ~* z: F! t8 ?  C2 ]. x; Y
  20.         }) M$ B8 E; p  a! ?, j2 M( W8 }

  21. 1 Y# {4 V* |+ k" @
  22.         var digitArray = new Array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f');  a) A5 O2 I' y, i* p2 l
  23.         function toHex(n) {7 W1 L6 S! Q: ?) o+ R+ O
  24.             var result = ''
    / _, F9 ?% l( h* u& C* [5 X
  25.             var start = true;
    / z% x$ B- c. z9 n( C8 v8 ]: T: @# [
  26.             for (var i = 32; i > 0; ) {6 q5 d; w+ W, ~7 a* w' w
  27.                 i -= 4;1 i/ h6 q/ X1 S' [5 B/ z0 [
  28.                 var digit = (n >> i) & 0xf;5 z$ V- a) i5 V" h, j% G

  29. ) K% l- U8 i$ t) r' i4 ^
  30.                 if (!start || digit != 0) {$ l( }9 p$ J+ _. L- n% ^! F
  31.                     start = false;
    ( U, \# d# A9 q  {, |
  32.                     result += digitArray[digit];/ J. b3 \  l  B0 r4 A
  33.                 }
    0 l  e3 D- h3 u% [- l) y5 a
  34.             }% [0 X1 H$ k* B" a9 k
  35.             return (result == '' ? '0' : result);1 f0 o- q! `( {) m
  36.         }' O: }, q  L: |6 E0 y3 K

  37. 5 d- X+ D/ O+ T  z6 `$ Z8 u
  38.         var login = function () {. Y/ P( J, l& z  n
  39.             var IsCheck = 'N';6 {5 @+ k3 E# e) q& M( v( |
  40.             if (window.location.host == "localhost:23111") {) p$ _6 D# ?" P( C$ i: d1 w/ q. n
  41.                 var DevicePath, ret, n, mylen;
    7 Z# p" J5 X: H
  42.                 try {
    ; F7 q3 J& _- {+ x- d! A5 ^/ K5 ~; T* \
  43.                     //建立操作我们的锁的控件对象,用于操作我们的锁
    ' y. l* ~9 z% o7 e1 z
  44.                     var s_simnew61;; p7 a# N5 n, }% M# F

  45. , C5 D$ x) p4 \# l
  46.                     //创建插件或控件2 `+ \6 M9 x0 l3 J& p, y; ~& {
  47.                     if (navigator.userAgent.indexOf("MSIE") > 0 && !navigator.userAgent.indexOf("opera") > -1) {
    - r/ Z% Z2 w& e2 A
  48.                         s_simnew61 = new ActiveXObject("Syunew6A.s_simnew6");
    & c7 H, F1 H: y; C' d5 \
  49.                     }3 |& \5 v- }( R- U) _
  50.                     else {7 S# Z& |. V' d: R. {
  51.                         s_simnew61 = document.getElementById('s_simnew61');7 r3 F) ?* @& z2 s+ j
  52.                     }
    3 L! G1 B5 }  T' E

  53. 7 D  I& {8 O+ [# W
  54. ( f* y% c# Z: ]5 s% L
  55.                     //查找是否存在锁,这里使用了FindPort函数) r6 p. h( g1 w
  56.                     DevicePath = s_simnew61.FindPort(0);
    $ k/ t- i# {+ c/ |# Q, V, K
  57.                     if (s_simnew61.LastError != 0) {
    7 E3 V8 w0 |, G
  58.                         window.alert("没有找到Ukey ,请插入UKey");& A* `9 ?) F% p8 B, f
  59.                         //window.location.href = "err.html";
    * h. A  o3 V! H! e" c  a
  60.                         return;
    0 H# q4 r+ u' ~( C7 H- L5 G
  61.                     }; j5 U& c& A" `; C* h( t
  62. " O8 ]3 ?- B4 g
  63.                     //这里返回对随机数的HASH结果
    ! e& s8 P/ w1 b
  64.                     frmlogin.return_EncData.value = s_simnew61.EncString(frmlogin.rnd.value, DevicePath);+ u1 w( p' B1 m4 i
  65.                     if (s_simnew61.LastError != 0) {
    8 ^5 X! b! u: |; p/ r# y" ~
  66.                         window.alert("Err to StrEnc,ErrCode is:" + s_simnew61.LastError.toString());4 U) m' O! S( k4 ?! h4 D. P
  67.                         return;1 C5 p' N" |8 Y1 a
  68.                     }
    * O" b) x9 x& s& |: x, @
  69.                     IsCheck = 'Y';
      o) E* H& W$ S- _% x
  70. 0 {$ |$ l/ v+ r9 t" {& ^3 M1 G9 ^
  71.                     Ext.net.DirectMethods.Login(IsCheck);" O8 Z% Q9 e4 y& z- o& H

  72. 7 g- h/ d" Y4 B* X. p+ {
  73.                 } catch (e) {+ k9 {* {: [7 \' e0 {
  74.                     alert("您在使用外网访问:" + e.name + ": " + e.message + "。可能是没有安装相应的控件或插件");
    # \6 i+ h& J; C& M' E$ g
  75.                 }' B2 _5 z# a2 Z4 @: X( d" F
  76.             } else {
    0 a+ v4 Y: x2 b) [2 W6 V) K
  77.                 Ext.net.DirectMethods.Login(IsCheck);
    + A0 ~  g; }( W6 E0 ?
  78.             }" \0 Z3 p# G: e

  79. ! }& t1 D5 u# v0 S& I; ?: C
  80.         };
    0 l+ f$ {* F! z4 |6 a- E4 V+ {
  81.     </script>
    ) S" |3 g- O7 k& K. J) ]
  82.     <script type="text/javascript" language="javascript">* z- D- n$ D; {8 e, q3 c# x
  83.         function reloadCode() {, F/ U/ ~( ^  u9 V% |2 n1 [! |$ b
  84.             var obj = document.getElementById('imgCode');
    9 [% P8 Q3 ?7 ~! J" W4 F9 j9 o9 P
  85.             obj.src = "VerifyCode.aspx?";
    " u# s  h7 W$ A4 n/ Z
  86.         }& O3 X4 B. M9 k6 p; a& j
  87. ! ^$ w) H, I" }9 T, `2 L  d* e: I
  88.     </script>; D. |: I' Y$ o' l
  89. CS代码:5 Y! W& p5 P" V) y$ @
  90. SoftKey2K ytsoftkey;
    0 e: d& X4 z- `3 l7 C; W# [: T' l. S, K
  91.        String KeyPath;
    1 Q- Y9 c) E* T0 _3 S8 B
  92.         private string _randomcode;
    , z% g9 E$ [8 u' X
  93.         /// <summary>
    1 A% `! x/ |, R3 b  ~' R6 q. c+ C/ J
  94.         /// 随机数
    8 h' [( X; u, t% E* H- ^6 d
  95.         /// </summary>
    $ l3 c1 A' O4 v/ o! I0 S# Y, h, o
  96.         public string Randomcode) G1 J& B6 w2 o. A- s
  97.         {9 i0 y) B- C- I  l" g. ^) C
  98.             get { return _randomcode; }
    / ^9 X: R$ A# W+ _; t) |- B2 t, E
  99.             set { _randomcode = value; }7 ~7 H! a, m  b1 l6 [2 {7 M, K
  100.         }
    1 j9 C/ E  A4 p8 F5 J7 X* `, p" h8 m' k
  101.         protected void Page_Load(object sender, EventArgs e)* w' ?  P+ `8 d# X
  102.         {
    + E9 v6 o; y; O4 B' T& V
  103.             if (!IsPostBack)  J6 n; g0 l' U6 T( P
  104.             {7 p6 H1 O$ x+ [8 }4 r1 C
  105.                 System.Random random = new System.Random();. `' \; N: J0 L- D- C" S* n
  106.                 Session["rnd"] = rnd.Value = random.Next(0, 2147483646).ToString();2 F) V- \9 L$ N- v$ u1 D' K
  107.                 Response.Cookies.Add(new HttpCookie("CheckCode", ""));( I. L) A( t9 Z& t
  108.             }2 R* {' k8 M" t# C2 \
  109.         }; E: V$ i# O, r" m& m

  110.   e5 z% s! j. R" Y/ C" d$ F+ G! F
  111.    
    ! h6 M: R  [' d. X! a) V3 G9 s
  112.         [DirectMethod]* V8 O! I; M5 W- t6 L$ R% K/ B/ Q
  113.         public void Login(string IsCheck)
    1 a' b1 E* s1 V5 L+ m0 Q% ^3 H" u
  114.         {
    % b, C6 R& \* d+ f, \' u# ]9 v( \- D
  115.             Check(IsCheck) ;
    : H+ ~0 I+ V  V% l! f/ z' D
  116.         
    " \! h0 d6 S' ?1 F, J9 t! a; x0 O3 Y
  117.         }7 m  b* [2 a4 A. x
  118.         /// <summary>
    : ^1 ^" I: s/ {' ^- D* q+ l4 a
  119.         /// 登录验证8 q7 T1 v% f  ?6 t$ E
  120.         /// </summary>5 N( s% \; I4 G: x) Z$ _
  121.         /// <param name="IsCheck"></param>) N4 ?6 s. J2 s0 W/ w
  122.         private void Check(string IsCheck) + k& I* {" {" W5 l$ {, |
  123.         {
    # Z( s5 E: @0 K4 s. A, o8 `6 @
  124.             if (Request.Cookies["CheckCode"] == null)# e5 y! w  \, v3 n. q' W1 P: H3 m' t
  125.             {6 v& V1 Q: q- d# {, I/ ~

  126. % g. ?1 p' @( K
  127.                 Notification.Show(new NotificationConfig8 |( w. _' m8 z: R+ {: n
  128.                 {
    : O2 |" D% P! s
  129.                     Title = "提醒",, q" `# z! Q9 G5 e) u6 t4 f/ Q
  130.                     Icon = Icon.Information,
    " j9 ?3 n# F/ p6 s* S  X5 J7 J( w
  131.                     Html = "<font style='color:red;'>您的浏览器设置已被禁用 Cookies,您必须设置浏览器允许使用 Cookies 选项后才能使用本系统。</font>"
    / E* m- Y: d8 B( Q; b! l2 u( s
  132.                 });: z# ~3 v! i/ n; m5 N
  133.                 return;
      @) ]( A% f! H, [6 {
  134.             }& Q! T# X- ^$ E* r- C/ ~
  135.             //验证码比较7 N' `4 @% |9 v; ]
  136.             if (String.Compare(Request.Cookies["CheckCode"].Value.ToUpper(), this.txtVerifyCode.Text.ToString().Trim().ToUpper(), true) != 0)
      Y7 Q/ d1 P+ R- j) z: `
  137.             {
    1 y& U) D. B- p3 f
  138.                 this.txtVerifyCode.SetValue("");
    . K& M; ^( W4 M, G
  139.                 Notification.Show(new NotificationConfig
    " f" ^% F1 y: ~- l3 Q
  140.                 {+ q9 O1 C) `/ Z" i
  141.                     Title = "提醒",
    0 U( `+ v& h" D0 M2 Q  c
  142.                     Icon = Icon.Information,0 F' @" x0 @2 k3 t
  143.                     Html = "<font style='color:red;'>验证码错误,请重新输入</font>"  w7 O$ n& Q. |% [+ k  u
  144.                 });
    ' _: }  C7 E; {+ t6 L& ]4 T
  145.                 X.AddScript("document.getElementById('imgCode').src='VerifyCode.aspx?';");' z0 c& \) M- r0 A4 S4 R
  146.                 return;6 C3 m, e. [! f) z" \
  147. * h5 _; A6 q9 N: E9 b' p

  148. 4 r3 ?$ ]( ?1 V! I0 v8 N  P
  149.             }' o5 c% @5 v8 _2 \; H/ F
  150.             else
    ; @$ M3 P* G# ~) a* ^# M8 {
  151.             {9 @1 |( X' Y: l4 V2 L8 ?
  152.                 Utility.MD5 md5 = new Utility.MD5();
    / H$ H; d/ l7 j9 F$ k
  153.                 DzPlatForm.Model.Users user = new Model.Users();2 \" W6 e& Q) ^1 t9 I7 Q
  154.                 user.USERNAME = Utility.Baseclass.SqlFilter(txtUserName.Text.Trim());//过滤危险字符
    3 o  x: w3 A1 Y' q/ a
  155.                 user.PASSWORD = md5.MD5Encrypt(txtPassWord.Text.Trim());// md5.MD5Encrypt(Utility.Baseclass.SqlFilter(txtPassWord.Text.Trim()));//密码进行加密  s  s( C- A! [# L# _& p/ @$ }
  156. ! x% p$ @, v4 \$ _
  157.                 string sql = "select * from [users] where id=1";9 ]8 |4 N: E. ^% M) b& [
  158.                 DataTable dt = DbHelperSQL.Query(sql, null).Tables[0];
    7 M/ f' Q6 o, ^  s
  159. ( l7 E1 h% `; c/ G/ J* {
  160.                 DzPlatForm.BLL.UserBLL usermgr = new DzPlatForm.BLL.UserBLL();3 c7 C* v1 Y4 A. D+ H. `) K
  161.                 string UserId = usermgr.LoginCheck(user);/ J% x3 v# Q! C, V/ c9 B
  162. * n6 G) ?9 C* r" l' B
  163.                 if (UserId != "")
    5 t/ r: |6 X: R. l% q3 D# ?# i. M
  164.                 {6 F% v/ q& R, ^" n6 B" o

  165. 9 {3 V! @+ W+ ?8 c2 B/ z
  166.                     Model.LoginLog lg = new Model.LoginLog();
    1 K0 I/ i7 X$ ]7 t# o
  167.                     lg.Name = txtUserName.Text.Trim();! `3 C, P# j% K( `3 H
  168.                     lg.Browser = Utility.IpBrowserHelper.getBrowser();3 }  u+ Q+ i3 L; i$ F7 |7 N1 U
  169.                     lg.Ip = Utility.IpBrowserHelper.getIP();0 K1 Z; H/ n3 b5 f# p* T
  170.                     lg.System = Utility.IpBrowserHelper.SystemCheck();) }0 ^3 f! V, w! G% K. q5 g. S
  171.                     BLL.LoginBLL logmgr = new BLL.LoginBLL();
    1 \5 P9 N% `  ~
  172.                     logmgr.LoginInfor(lg);
    * X% u4 \$ {+ w7 @& y' G6 x
  173.                     usermgr.Record();  d* X3 @( b- @- f1 v, Z

  174. 0 Z) Y8 V% e0 f2 R6 m
  175.                     Model.Indentify idf = new Model.Indentify();
    ( j0 Y9 W& P% P' M! b$ N
  176.                     idf.Userid = int.Parse(UserId);
    % Z2 R, c- @% W! }* U
  177.                     BLL.IndentifyBLL idmgr = new BLL.IndentifyBLL();
    + {9 u; ?  c- @- P
  178.                     idmgr.GetIndentify(idf);: z" C- W( y9 r
  179.                     Session["userid"] = UserId;
    4 z, ^/ ~' E2 \# L5 q/ d
  180.                     Session["UserCode"] = txtUserName.Text.Trim();
    ) I9 g" K5 W  r: v
  181.                     Session["UserName"] = idf.Name;2 @0 ?7 P* P. B- _7 V2 U! w
  182.                     Session["utype"] = idf.IsSystem;, @: f7 n1 O- L
  183.                     Session["uip"] = lg.Ip;2 k4 g. f/ R' E$ P5 ~' \) p$ ]6 D3 P
  184. 1 ~$ b, i  F* L

  185. 5 r: A* O* u5 D9 {2 d" O( _
  186.                     //X.Msg.Show(new MessageBoxConfig; i$ C# v+ E, s: }; g6 p! o
  187.                     //{
    * M. W( @+ t% Z5 d
  188.                     //    Title = "请等待",
    % a/ J* |& S8 E& _/ `8 G
  189.                     //    Message = "正在加载项",7 g& b3 O+ Z% j/ _# U
  190.                     //    ProgressText = "初始化中...",
    ! c: ?0 K% h  n" @4 ^/ e- E
  191.                     //    Width = 300,# {' F% M# j: Z
  192.                     //    Progress = true,) I/ P& ^( @) |) ^; [8 Q2 ^5 k) U
  193.                     //    Closable = false,9 V/ k' G3 ?# x
  194.                     //    AnimEl = this.btnlogin.ClientID
    ; w( W% Y! P6 v  o
  195.                     //});
    ' Q. ~; c. L0 Q
  196. ) l: c8 o  w! ?- Y; n: k" V
  197.                     //this.StartLongAction();
    6 p5 c0 i2 z6 A3 y
  198.                     String strData, m_StrEnc, Key, Flag;  p/ O$ E) P( K

  199. 5 K! R/ ~5 G) s/ X. ?  M
  200.                     Flag = IsCheck;  ^6 X$ H7 z% x. {6 r
  201.                     //Key:即增强算法密钥,这个要与设置在加密锁中的密钥一致
    " @* F+ z/ J4 c# D# b% e
  202.                     //增强算法密钥可以是每一把都不相同,也可以是都相同,如果是不相同的可以根据用户名在从数据库中获取对应的增强算法密钥,可以根据安全性及自身具体情况而定,这里使用了一个固定的值1 `3 {: b: D$ x) o
  203.                    // Key = "1234567890ABCDEF1234567890ABCDEF";
    1 j+ V( [; n: D3 J
  204.                     Key = idf.UkeyCode;+ t/ T  }8 L0 w! j
  205.                     //strData:要进行加密的数据
    % u" f3 o* @6 A" Z$ M
  206.                     strData = rnd.Value.Trim();//Session["rnd"].ToString();
    # M0 F) ~- o5 L/ `5 g* j- d7 V( I
  207.                     //'在服务器端对数据进行加密运算
    1 X: Q: z* Q; X8 N. t2 t
  208.                     m_StrEnc = Global.m_softkey.StrEnc(strData, Key);
    . U+ P7 F+ l5 ^* Z
  209.                     //比较客户端加密锁返回的加密结果与服务端的加密结果是否相符,如果相符就认为是合法用户,由于使用了随机数,从而实现了一次一密的高安全性,可以用于高安全性的身份验证
    2 v/ J! }- c* X# |% x! R' H
  210.                     if (Flag == "N")//内网不需要比对- k; {6 V8 N  U) ]; s5 m9 A
  211.                     {2 u4 K+ r  u1 i2 P! L! u
  212.                         Response.Redirect("Index.aspx");* g, F0 D; Y. J% Y' [
  213.                     }
    8 x: [$ }* [  F  t. a) ?
  214.                     else0 a9 a0 K% A# ^; \$ R
  215.                     {
    . n) D) {  ^5 ?
  216.                         if (m_StrEnc == return_EncData.Value)
    8 }& e& W' S4 E" ]9 C) e
  217.                         {
    : Y5 y/ G6 M+ B
  218. . X* O' f7 v& x/ o  A
  219.                             Response.Redirect("Index.aspx");' ?1 q0 e- g* s: e
  220.                         }; @4 O# k. \4 I0 r  X: p
  221.                         else3 e" i* s5 `/ `. Y2 N
  222.                         {% Z2 Q; U" Y/ |3 s- ^" ^" k
  223.                             Notification.Show(new NotificationConfig1 ^  z" ]+ i" p7 O4 M" S
  224.                             {3 [: v) e# X1 b8 q
  225.                                 Title = "提醒",
    5 b$ k/ p4 R" n' ~% v& T- A& r! p) }
  226.                                 Icon = Icon.Information,
    & K4 v! `4 q: z1 Q9 u( N- ^
  227.                                 Html = "<font style='color:red;'>该用户不是合法用户!</font>"
    % n+ D# D" b. J: l  n
  228.                             });
    9 w, B! E7 e$ E2 Y" ?
  229.                         }
    & [  e  B2 ^; t* L0 I, H* M
  230. 7 b! x8 {1 W4 f2 w9 k
  231.                     }) R; r$ b) P! a

  232. 2 p- H8 E' p& g' W  N
  233.                 }
    & i1 x% o2 o: T+ \. Y, I% ?
  234.                 else( S- K0 t' W% O+ B- ], v
  235.                 {$ Z4 z  \; W( u" D$ O- K

  236. # z% }: [" c9 ^( H% f* V/ y
  237.                     Notification.Show(new NotificationConfig! N4 H2 g0 Q# Z, j! k
  238.                     {
    & H% G/ J( W/ ~
  239.                         Title = "提醒",0 F( U& Y; L! Y, b, T( g
  240.                         Icon = Icon.Information,
    8 c& e* I- y( M& S
  241.                         Html = "<font style='color:red;'>帐号或者密码有误,请重新输入!</font>"
      W2 `' v/ m5 v* Q
  242. ! b  }' I( B. d/ F/ v7 p3 l* B3 f2 X! H
  243.                     });5 t* x0 o; R4 T6 Y) c
  244.                     X.AddScript("document.getElementById('imgCode').src='VerifyCode.aspx?';");) N( Z0 n" f/ F; L* j" p
  245.                 }
    ( m: w% q5 t! A
  246. $ }7 N9 S6 K, F" i- |0 F6 G
  247.             }
    6 N- J4 w4 f2 b. M# |# y
  248.         }
    - E6 N- U* D% t: y5 c" X
  249.         /// <summary>
    3 M4 W3 ~) e8 h
  250.         /// 开始计算任务
    / w. t! m% p1 F- r; H. H; f
  251.         /// </summary>
    . c; X1 C2 h' n+ N7 ^; g! [' u
  252.         private void StartLongAction()4 h5 D# k2 c, c- N8 s
  253.         {
    5 b3 N9 q- u; R7 q
  254.             this.Session["Task1"] = 0;
    - r. K/ ?/ S. I$ n" p) `
  255.             ThreadPool.QueueUserWorkItem(LongAction);
    3 q2 J3 @) V( V/ J6 `8 |% n, i

  256. - q: k4 M. \% A
  257.             this.TaskManager1.StartTask("Task1");' g7 ~1 P+ [4 C& \( w3 I* n
  258.         }4 U7 W- x0 w/ X* v
  259.         /// <summary>9 {( B& A+ |: s* v4 ]' v% q2 D; h3 k6 N
  260.         /// 计时器. D7 }0 x. H5 g4 T0 g
  261.         /// </summary>
    / Z# E2 k$ `, l. P+ V
  262.         /// <param name="state"></param>
    ' H+ Y/ c! e4 `! ]) s( r
  263.         private void LongAction(object state)
    0 M* [- e; N1 r# e4 S, t
  264.         {
    0 z# M- ^2 Y# ?8 M+ f/ a
  265.             for (int i = 0; i < 100; i++)6 b) h( w1 q" l. P" L/ `! z( D
  266.             {
    5 O% N; g8 G  j+ T" q" ~: R, R
  267.                 Thread.Sleep(10);9 o+ V! C& b/ p
  268.                 this.Session["Task1"] = i + 1;
    . L9 x; K' @: _0 e; K
  269.             }( L6 Y4 q3 O/ g' `# ^
  270.             this.Session.Remove("Task1");
    6 \7 s: z9 N8 B) K7 R- A8 n
  271.         }! x/ {2 g0 c/ J+ ~7 [  E, l
  272.         /// <summary>- y7 k3 e5 `! ]9 w1 f
  273.         /// 刷新进度条5 O" D8 E9 |/ S
  274.         /// </summary>; e* h" G+ e$ b+ R, B0 m
  275.         /// <param name="sender"></param># g* s7 ^5 o9 m7 W( m; A
  276.         /// <param name="e"></param>
    " K  D/ ~2 P7 Q$ T# o% _( g
  277.         protected void RefreshProgress(object sender, DirectEventArgs e)+ x( |% B) [4 m. h, `( g
  278.         {
    , X; l$ p7 x8 c& a+ X3 l2 w1 Q/ k
  279.             object progress = this.Session["Task1"];
    # i7 S( V; S  ~9 p# d  Y& D
  280.             if (progress != null)7 @) e: P2 t' l/ ]; {
  281.             {( J+ c4 `- C# h7 z  q
  282.                 X.Msg.UpdateProgress(((int)progress) / 100f, string.Format(" {0} % {1}", progress.ToString(), 100));
    / g. B3 R' f' ], N: H1 [9 z- \
  283.             }$ \. M  B8 ^& v2 C  o" g1 c
  284.             else5 H- P; C+ n1 i9 H/ O
  285.             {+ W6 G( a! F6 ^' T3 g! @( i0 q
  286.                 this.TaskManager1.StopTask("Task1");
    5 Y; q# z5 K+ R1 ?
  287.                 X.MessageBox.Hide();
    & }- V2 m# W6 q) H( m$ i
  288.                 Response.Redirect("Index.aspx");
    : R! J- a# {0 s& |& D
  289.             }
    ; n6 g: G& b6 @4 g# A4 ?
  290.         }. z, H+ V2 a8 M9 C3 M  f
  291.         /// <summary>7 U, M6 X6 h- J4 V
  292.         /// 更换皮肤
    5 N7 }( L5 E2 }% `+ u
  293.         /// </summary>
      W% a" `& u3 N
  294.         /// <param name="theme"></param>2 n6 j/ Q- p5 L& I1 T6 ~  ?! c
  295.         /// <returns></returns>
    ; b, M: M7 B0 @& j, A) A: t
  296.         public string GetThemeUrl(string theme)
    9 M$ G: J* T; @0 p2 H* a; s
  297.         {
    ) K2 `- u9 f9 C: [8 b
  298.             Theme temp = (Theme)Enum.Parse(typeof(Theme), theme);# G2 R3 d( p" g! a/ b: T! r
  299.             this.Session["Ext.Net.Theme"] = temp;4 C* ?3 {2 x- ?1 D% f
  300.             return (temp == Ext.Net.Theme.Default) ? "Default" : X.ResourceManager.GetThemeUrl(temp);" \6 n3 z1 ]5 f8 G% Z: J
  301.         }
    - }- c: s9 r) r8 |. B
  302. * h6 P, Q* @) Y) j+ G
  303.     }
    : e+ ~% b2 a$ F/ B

  304. ' _8 D+ U7 {/ R7 |# Z1 R
  305. 服务端代码:Global.asax" r& ]2 \& F" P) P- Z
  306.         public class SoftKey
    3 V7 s3 }# s! C3 E
  307.         {0 }+ [. H  c. H' {$ X/ d& z
  308.             [DllImport("kernel32.dll")]
    % g/ O) i" u) D
  309.             public static extern int lstrlenA(string InString);* a" l5 |- C& Y! t$ e4 |9 i
  310.             [DllImport("kernel32.dll", EntryPoint = "RtlMoveMemory")]+ |8 i; T1 S% j- S3 z
  311.             public static extern void CopyStringToByte(byte[] pDest, string pSourceg, int ByteLenr);
    9 s" I0 J: h/ }
  312.             [DllImport("kernel32.dll", EntryPoint = "RtlMoveMemory")]
    8 M) a5 P, K$ k( U. n2 u
  313.             public static extern void CopyByteToString(StringBuilder pDest, byte[] pSource, int ByteLenr);8 T9 E: H4 i* u
  314. & x( o* n9 u& u4 l7 ]7 Z
  315.             //以下用于将16进制字符串转化为无符号长整型' {4 M  _6 S, ]5 ]
  316.             private uint HexToInt(string s)
    ! \3 {$ s( n, e: B5 i
  317.             {, i! g* f4 L. [
  318.                 string[] hexch = { "0", "1", "2", "3", "4", "5", "6", "7",8 @. x5 F' |6 I* p
  319.                                                                        "8", "9", "A", "B", "C", "D", "E", "F"};% ^, G- u' W! Y# q2 |8 ~+ ?! l
  320.                 s = s.ToUpper();
    3 `8 t/ R& m* R- U
  321.                 int i, j;! d9 |5 ^; f; u; G7 \0 q
  322.                 int r, n, k;1 b9 ]/ V% B. p8 r% }
  323.                 string ch;
    ! L: c  P) [: G

  324. ) w# u$ n) n+ T% H0 q3 T1 s
  325.                 k = 1; r = 0;" D& P, r% R* _) b1 A3 @0 I4 n/ z
  326.                 for (i = s.Length; i > 0; i--)
    2 W8 _, j9 |) q+ _- [
  327.                 {
    8 I% L2 ^" |3 P
  328.                     ch = s.Substring(i - 1, 1);4 ?& y, Q2 Z8 I
  329.                     n = 0;
    3 x7 Y4 _; c( P/ q+ V. j
  330.                     for (j = 0; j < 16; j++)
    ) _9 t, h* T  ~6 U" `( y/ Z: M2 A" U
  331.                         if (ch == hexch[j])2 a- W" |  X5 G/ Q9 O/ R: \- i' |( n
  332.                             n = j;
    + T! g, S: _) ]# L% y5 S" [4 B9 X: F
  333.                     r += (n * k);
    9 z$ w, m- j) o% P0 Q
  334.                     k *= 16;% T6 ~# a3 m9 t* t: k, d
  335.                 }4 V2 T, t( M5 _3 ]% O, [) d. E( |
  336.                 return unchecked((uint)r);4 g4 z8 D% G3 m' V
  337.             }+ L2 J  r2 _& X+ [7 q* [' g8 I3 [
  338. & E- i& g% v* e7 X2 M3 X2 |9 g
  339. ) u  _) [3 Z* v
  340.             public void EnCode(byte[] inb, byte[] outb, string Key)
      \. Q% B8 E- l! I6 m: d2 Z
  341.             {
    8 A% q5 ?1 v6 t7 b6 F6 I( x6 r9 j
  342. , }2 z* t3 @6 N& H
  343.                 UInt32 cnDelta, y, z, a, b, c, d, temp_2;
    8 S  i, I7 J) h$ d! @0 `4 C, t; o! e
  344.                 UInt32[] buf = new UInt32[16];
    & p% ?% s- ~5 E( @8 Q
  345.                 int n, i, nlen;
    * Q% \& ^6 r' T4 P
  346.                 UInt32 sum;, h9 ^! w5 X  g+ e, F: c
  347.                 //UInt32 temp, temp_1;8 O" p1 L0 e2 L; p
  348.                 string temp_string;, q2 l4 @8 z* T5 N

  349. ; ?* i! J* W* [3 p3 D& x

  350. ' |! a* @: D+ N- D
  351.                 cnDelta = 2654435769;
    * Z5 j8 A/ c; i( p4 o  ^
  352.                 sum = 0;
    " O+ T+ A6 O. U0 X

  353. , z1 C1 e+ U# v* R& T& h+ a9 @' j$ ^
  354.                 nlen = Key.Length;$ g7 C0 I; y* b( u9 [3 n9 u
  355.                 i = 0;
    * i: v, O- z' @1 D! n# `% V
  356.                 for (n = 1; n <= nlen; n = n + 2)1 p" J* W1 }3 h/ s
  357.                 {% K$ v0 D5 L; M  _; Y& H9 i
  358.                     temp_string = Key.Substring(n - 1, 2);) z8 }0 p( h+ j4 I5 B  k) ~  q
  359.                     buf[i] = HexToInt(temp_string);
    ; P/ L0 W% ^# j# Z, M/ w) O
  360.                     i = i + 1;
      n( C5 o( |3 U( R! T7 [3 I
  361.                 }2 H3 R( Z, S' \7 K7 R7 |
  362.                 a = 0; b = 0; c = 0; d = 0;  c6 w  N* R* T# q
  363.                 for (n = 0; n <= 3; n++)
    ; ~7 ^; V: F; |* R8 S% J
  364.                 {2 l9 q% t4 D; {$ Y8 o/ v- s) V8 V
  365.                     a = (buf[n] << (n * 8)) | a;) n/ C" W( P1 L
  366.                     b = (buf[n + 4] << (n * 8)) | b;
    " H# r/ e( ^& j0 U1 h% i4 \& X0 w7 _, a
  367.                     c = (buf[n + 4 + 4] << (n * 8)) | c;
    , W' n" g1 `1 e5 q
  368.                     d = (buf[n + 4 + 4 + 4] << (n * 8)) | d;
    # r' {  g, ~1 n) @& q9 h+ S  I$ W
  369.                 }
    / h8 S- Q. T, h. }1 I/ W
  370. ) i2 X. k$ [6 y! k* d: Y
  371. ; t: @& ?' q. J; [* v) z

  372. , J# F0 k( X( k# z) f; ]3 r
  373.                 y = 0;
    ! m" |5 j( J0 r' m$ e' d7 n* u
  374.                 z = 0;3 J. Z- y. L) `' ?" y
  375.                 for (n = 0; n <= 3; n++)0 M# x6 ~1 Y/ S
  376.                 {
    ( Q6 Z' M( S1 |$ W/ [
  377.                     temp_2 = inb[n];
    5 u4 l" X: o" B
  378.                     y = (temp_2 << (n * 8)) | y;
    , O0 R5 Q& ?2 T7 c/ n0 ?% z
  379.                     temp_2 = inb[n + 4];/ o% z$ L9 o8 G/ F, c0 _- |) |2 w' ]
  380.                     z = (temp_2 << (n * 8)) | z;
    7 r1 x; F( g' ~8 ~0 K9 x7 m, i
  381.                 }
    $ g3 D/ d: Q5 j/ ?- p4 Q5 `

  382. 5 _. ~8 Y. E9 A4 [" n4 R: W
  383. : B$ j7 u3 q1 [# F* F" u
  384.                 n = 32;- ]2 G5 B& a7 ~1 v* C, i7 V

  385. 7 `- [) f2 E% P4 G/ n
  386.                 while (n > 0)
    $ t, T; Y' k2 x2 @) ]
  387.                 {
    8 p0 S: A: Y' j" A2 W0 O2 u+ U
  388.                     sum = cnDelta + sum;& S5 r( i, J9 d) y; m5 J) p
  389. / K! E1 [/ O1 _
  390.                     /*temp = (z << 4) & 0xFFFFFFFF;
    ; N/ z, B% [7 T1 k0 \
  391.                     temp = (temp + a) & 0xFFFFFFFF;
    + B+ {9 I" t/ u# E, ^# q" b+ R
  392.                     temp_1 = (z + sum) & 0xFFFFFFFF;
    5 u8 B6 H0 \8 g& y
  393.                     temp = (temp ^ temp_1) & 0xFFFFFFFF;
    ; J5 E# Y3 X9 g% p
  394.                     temp_1 = (z >> 5) & 0xFFFFFFFF;
    + p# v% a6 p# y1 E
  395.                     temp_1 = (temp_1 + b) & 0xFFFFFFFF;
    $ T% W& a/ [6 V1 v9 ^( ~
  396.                     temp = (temp ^ temp_1) & 0xFFFFFFFF;$ D! t( E& U4 S% [) Q/ T" j8 L0 W
  397.                     temp = (temp + y) & 0xFFFFFFFF;
    2 v; S$ j$ ?/ o$ g- _/ ~, A
  398.                     y = temp & 0xFFFFFFFF;*/! r; R( f7 h( J6 l. x. r3 M
  399.                     y += ((z << 4) + a) ^ (z + sum) ^ ((z >> 5) + b);/ z$ h, y3 ?5 w5 X

  400. # p3 B) G  i5 b
  401.                     /*temp = (y << 4) & 0xFFFFFFFF;
    4 F& S7 x3 v. x! X  _$ J5 e# Z
  402.                     temp = (temp + c) & 0xFFFFFFFF;
    4 u$ D4 w7 l5 p, h- I
  403.                     temp_1 = (y + sum) & 0xFFFFFFFF;, j$ G3 e9 y2 `* C1 ^
  404.                     temp = (temp ^ temp_1) & 0xFFFFFFFF;% P2 B, i! T; D$ O* j
  405.                     temp_1 = (y >> 5) & 0xFFFFFFFF;- ^- b3 k+ Y- z. P( w
  406.                     temp_1 = (temp_1 + d) & 0xFFFFFFFF;
    9 ~' x/ [) @+ B; v$ B
  407.                     temp = (temp ^ temp_1) & 0xFFFFFFFF;
    % }8 ^3 g% o* V6 t$ O
  408.                     temp = (z + temp) & 0xFFFFFFFF;( W9 |$ t& |- Y/ g$ C9 W
  409.                     z = temp & 0xFFFFFFFF;*/9 ^* N5 x" T- ?, J4 M( ]* _' L
  410.                     z += ((y << 4) + c) ^ (y + sum) ^ ((y >> 5) + d);
    ! c* `5 q2 U6 J- B
  411.                     n = n - 1;- |5 V( `: [9 ]8 ^

  412. 3 e& @% a& K8 S( k5 L7 G
  413.                 }
    : K9 W! m6 m# R8 l! @
  414. 6 z/ i- [. M. v! h' y' R" u
  415.                 for (n = 0; n <= 3; n++)
    ! b4 a1 E: R1 i) g- F
  416.                 {# Q& @- T1 J# Y: V" E0 g
  417.                     outb[n] = System.Convert.ToByte((y >> (n * 8)) & 255);
    5 w" d% K- D6 b+ S8 q) q
  418.                     outb[n + 4] = System.Convert.ToByte((z >> (n * 8)) & 255);
    8 N! R( j+ ~  u
  419.                 }9 z5 z4 Y; g: Q0 z- l* R

  420. ' x/ ]9 _+ D9 Z9 m
  421.             }
    2 s! \( b- K# J+ [
  422. " ]7 Q8 c7 K  {9 q
  423.             public void DeCode(byte[] inb, byte[] outb, string Key), ?+ C" o' O3 M8 c
  424.             {
    , ]/ k4 F/ v) ]. i. j
  425. 7 s8 N. k* U+ q) D" L
  426.                 UInt32 cnDelta, y, z, a, b, c, d, temp_2;
    0 ^% n6 Q$ J+ G6 w) I+ H
  427.                 UInt32[] buf = new UInt32[16];9 C# n, }: a$ p7 S  Z+ A- v  W
  428.                 int n, i, nlen;
    6 N  a& D8 r* U' v8 _
  429.                 UInt32 sum;
    * E4 N% K3 r' ]1 S% o
  430.                 //UInt32 temp, temp_1;9 ~+ V' I' E, l& M+ t
  431.                 string temp_string;% n3 ^; u0 ~4 u
  432. % v3 {( m! P' O
  433. # s5 V: U) v' D) i4 j/ j( q
  434.                 cnDelta = 2654435769;- Q% [/ l/ r# c$ Z9 i: A0 U
  435.                 sum = 0xC6EF3720;# g$ W8 e' H0 G# b$ G2 u0 U  h
  436. + i3 A, V: s5 u/ O: i) b2 D
  437.                 nlen = Key.Length;
    ( D- p0 ]3 Y! t" ?
  438.                 i = 0;9 Z3 ^4 d* H% C) ?. W1 v
  439.                 for (n = 1; n <= nlen; n = n + 2)! v, }# A5 T9 M
  440.                 {/ C$ f4 s/ p9 _' y+ y
  441.                     temp_string = Key.Substring(n - 1, 2);: J7 J3 j, b+ y: ~0 e9 d$ ~6 s. F, g
  442.                     buf[i] = HexToInt(temp_string);
    1 O3 }+ S0 k! x* i6 v. K
  443.                     i = i + 1;
    ; J. ?' i) B: w1 B( K
  444.                 }* x- X, @) c# `
  445.                 a = 0; b = 0; c = 0; d = 0;
    7 {% D) \: g* C+ m# z
  446.                 for (n = 0; n <= 3; n++)3 O* F& @( n/ b9 A
  447.                 {8 ^$ V% S$ T' c" l; w
  448.                     a = (buf[n] << (n * 8)) | a;
    5 U/ g# N+ {/ c0 @8 F  Q
  449.                     b = (buf[n + 4] << (n * 8)) | b;3 ~( @; H0 [- C
  450.                     c = (buf[n + 4 + 4] << (n * 8)) | c;) P1 [) Z/ v7 e
  451.                     d = (buf[n + 4 + 4 + 4] << (n * 8)) | d;8 S! B7 E( K6 d# X
  452.                 }6 f! P1 j# g7 N: ~' B4 i! m& L
  453. / H* \5 l* h4 B# t" O

  454. 9 ]1 v7 c$ P6 `# C
  455. ( u* u/ j! d0 S: X3 a
  456.                 y = 0;+ v* {% E1 D/ N1 l( m3 i. j
  457.                 z = 0;! ?( n, G$ {. V+ V. w: m9 d
  458.                 for (n = 0; n <= 3; n++)
    & Q7 Q% g: c( }. W' L0 j9 G+ g
  459.                 {4 M7 L. q7 D2 Q- C. x
  460.                     temp_2 = inb[n];- x3 V- @# O7 b/ K9 i
  461.                     y = (temp_2 << (n * 8)) | y;
    + v* @/ K' `% X4 [
  462.                     temp_2 = inb[n + 4];: b0 v' ~" \& v. H' F  K
  463.                     z = (temp_2 << (n * 8)) | z;
    $ _/ L* f+ y! S! l
  464.                 }
    : ~. X! v$ p0 {( a
  465. 6 h0 d( K9 O# Z1 C
  466. / B& P# s/ {9 \" W
  467.                 n = 32;
    # z- [/ o+ u0 B6 r$ J; g# L) P

  468. 0 o1 G* T) \: j# U
  469.                 while (n-- > 0), d) X( L5 n( U7 `9 i- g+ {: g
  470.                 {2 T" S2 |; W/ M; _1 Y
  471.                     z -= ((y << 4) + c) ^ (y + sum) ^ ((y >> 5) + d);
    ! w) C  z" Q8 X* H1 s4 o
  472.                     y -= ((z << 4) + a) ^ (z + sum) ^ ((z >> 5) + b);  |1 a4 `* o% J
  473.                     sum -= cnDelta;
    ' B8 A' j* R0 j) C3 g: A3 ~% u
  474. 8 u& P' o# u7 }: @
  475.                 }! I; h) i0 m' L& E
  476. # \3 u  \" c( \3 n( Z  O5 K
  477.                 for (n = 0; n <= 3; n++)
    5 t2 h7 C# ^+ s# F; s+ g
  478.                 {7 [8 C6 P6 U6 r
  479.                     outb[n] = System.Convert.ToByte((y >> (n * 8)) & 255);
    0 v. u5 T. L- C5 `
  480.                     outb[n + 4] = System.Convert.ToByte((z >> (n * 8)) & 255);7 J$ W* l6 ]+ K) t
  481.                 }- I, f7 q/ C3 }6 R1 `8 s
  482. 0 r' |. v! D4 R" G8 h; ^! y
  483.             }5 M6 l% b; H8 Q- |, ?
  484. 5 {; c/ g  \8 t8 O! |

  485.   K7 Y, {6 s# C1 I% J2 Y$ {
  486.             public string StrEnc(string InString, string Key)//使用增强算法,加密字符串
    . r* V& r; Y6 O5 r5 L. ?; a
  487.             {! \0 S. I5 ]: M5 }$ |  _  y

  488. 7 \4 d7 O/ y. _
  489.                 byte[] b, outb;1 z. [0 ?+ @5 N/ P, v
  490.                 byte[] temp = new byte[8], outtemp = new byte[8];
    ; ]8 o8 f8 }3 A& t3 k
  491.                 int n, i, nlen, outlen;# B0 c; S* p: ?& h& ^9 F
  492.                 string outstring;
    3 T. ~3 u% N- a
  493. 1 y4 d& q: x2 Q" X

  494. ' |5 g2 g5 s) W; y* O
  495.                 nlen = lstrlenA(InString) + 1;
    2 k+ Z  z7 ]" t
  496.                 if (nlen < 8)7 j0 B  j1 a8 a3 @# C
  497.                     outlen = 8;; h. N3 Z& \( k( D8 G. m2 @
  498.                 else
      o3 d! l( G+ i% D# I$ q/ y9 q: r
  499.                     outlen = nlen;
    8 ^. l0 G  h! R& \) e8 w  D- I" ?
  500.                 b = new byte[outlen];
    9 h; i+ ]6 m# x- J
  501.                 outb = new byte[outlen];; m8 p9 C8 h/ ~! i) G2 ?
  502. $ m) R- i6 r8 q9 x" k" v9 [
  503.                 CopyStringToByte(b, InString, nlen);3 A$ S7 _7 I9 c& x9 v- L
  504. 3 v' t6 a' m' f4 `
  505.                 b.CopyTo(outb, 0);
    / B6 {9 q1 q* A! T9 W. \
  506. * ?+ c: b; l4 C) ]  J& y
  507.                 for (n = 0; n <= outlen - 8; n = n + 8)' M# [' \1 f, U8 i6 W* e/ X
  508.                 {# n. O+ g. I% ^: B9 N
  509.                     for (i = 0; i < 8; i++) temp[i] = b[i + n];/ C7 Z$ c+ q4 E7 J
  510.                     EnCode(temp, outtemp, Key);$ V0 j: ^  l: X1 w2 [2 f# `$ C. t
  511.                     for (i = 0; i < 8; i++) outb[i] = outtemp[i];: I) s0 B' L! o% }; {% w; ]
  512.                 }
    4 c1 a0 a/ p* U* J; N- c
  513. 6 B4 c% O" n% `0 A3 l
  514.                 outstring = "";
    - g2 ?  o& W( O, e
  515.                 for (n = 0; n <= outlen - 1; n++)/ j  \" n9 E' x! l  n- {- u
  516.                 {0 U  a% v' `% T  ]' P
  517.                     outstring = outstring + outb[n].ToString("X2");
    , N4 u% V% k7 Z: w
  518.                 }2 s6 j8 ?3 W0 r$ S0 I# t
  519.                 return outstring;$ L4 J: L: k! C, Y
  520.             }
    & n$ M, @5 G, I/ ~# v4 S
  521.             public string StrDec(string InString, string Key) //使用增强算法,加密字符串
    " t3 l6 \% X& K- p, S2 W* G* w
  522.             {7 E- C: Z9 x) t# o# V" b
  523.                 byte[] b, outb;8 \- E$ E! Q0 [8 o7 O
  524.                 byte[] temp = new byte[8], outtemp = new byte[8];) b" u2 f6 n/ x/ x% l/ c( X
  525.                 int n, i, nlen, outlen;2 H$ L- `6 ?* [$ _8 v$ G5 }
  526.                 string temp_string;) U! t/ g3 h- L# E) u! v- O$ A7 `
  527.                 StringBuilder c_str;
    1 i2 L# W3 h8 j+ p+ j- B
  528. 7 ?, h9 J& y) x6 m& F0 [
  529. 2 [0 B: `% @0 @1 C( k$ n
  530.                 nlen = InString.Length;, @" ~- d1 [' I; W0 A2 b
  531.                 if (nlen < 16) outlen = 16;5 A9 d6 Y: ^7 M+ X" t9 H/ S
  532.                 outlen = nlen / 2;; U. q; A' Z2 u3 r# Z
  533.                 b = new byte[outlen];1 @& a, p  H. w1 U3 f
  534.                 outb = new byte[outlen];
      k; `6 _1 j/ A2 g  J3 t8 ^
  535. ; r1 h& f+ d6 ~4 p2 l
  536.                 i = 0;1 K8 F* t, J4 A- k) E9 }$ X
  537.                 for (n = 1; n <= nlen; n = n + 2)( T$ E( _' @, X) c" _3 r
  538.                 {
    . o9 Q  O0 f- o
  539.                     temp_string = InString.Substring(n - 1, 2);
    2 ~1 ?+ q# x% w# u; f0 V
  540.                     b[i] = System.Convert.ToByte(HexToInt(temp_string));
    8 u+ j% h3 ?( p! P; A
  541.                     i = i + 1;
    $ W( L# Q' M- }0 Y
  542.                 }4 C4 A/ g9 @4 [3 k. D" @7 I

  543.   k4 @$ n& g. j# s4 P( [; N9 M4 H
  544.                 b.CopyTo(outb, 0);4 f$ M3 k+ ^  h1 E  u, }

  545. ' r" X  ^. m7 N6 x( k
  546.                 for (n = 0; n <= outlen - 8; n = n + 8)
    . h6 }' F/ l: M: L, ?
  547.                 {
    . t/ O$ C6 N  z8 u* d
  548.                     for (i = 0; i < 8; i++) temp[i] = b[i + n];
    6 L. S6 {0 G4 L% b) w* I0 K
  549.                     DeCode(temp, outtemp, Key);. ~1 ^, M1 r' q% o2 m9 y
  550.                     for (i = 0; i < 8; i++) outb[i] = outtemp[i];7 r8 m  D9 E9 N- i
  551.                 }
    : C: F4 p$ t: {1 s* B' P
  552. . C2 |0 n9 J: G2 n5 _" m4 D/ S* g
  553.                 c_str = new StringBuilder("", outlen);
    / ]' t* F4 z5 s' c3 z1 k
  554.                 CopyByteToString(c_str, outb, outlen);- M4 E5 r  J  D
  555.                 return c_str.ToString();
    8 \( j) H. M1 w

  556.   `* `, ^: U/ O# ~  E
  557.             }" \0 q* n+ i5 y# o8 T
  558. # L9 x7 E/ X  v; `% j

  559. # _( n- }" Q' h$ K
  560.         }
复制代码

) S* O2 X( E3 _2 n: x( [& t+ b( G% Y: X3 q% h
唯一锁写入Ukey:
( D, ?' x+ @9 ^0 T( Q  Q2 e
8 H2 _, ]& ~& q% l( i, ^- N
公网客户端:安装插件
4 i1 _1 L: ^" c9 n# }. p  C" _
多文件安装版+需要先插入UKEY

% f0 i) B" w) k6 C& d: R/ X
插入UKEY

5 L8 ]7 T1 ]0 k) `4 f% R
登录成功!

  f! T6 G  z3 n" E9 S% P( ]

科帮网 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与科帮网享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、科帮网管理员和版主有权不事先通知发贴者而删除本文


JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

3

主题

0

听众

212

金钱

四袋长老

该用户从未签到

沙发
发表于 2016-03-07 17:54:10 |只看该作者
很不错哟,谢谢楼主,受教了。
回复

使用道具 举报

快速回复
您需要登录后才可以回帖 登录 | 立即注册

   

关闭

站长推荐上一条 /1 下一条

发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
快速回复 返回顶部 返回列表