根據網上流傳甚廣的乙個版本修改,修正了設定加密串過期時間expiry沒有效果的問題 。>>原始碼
<<
**using
system;
using
system.collections.generic;
using
system.linq;
using
system.web;
using
system.text;
namespace
api.common
;///
///c#版本 discuz authcode函式。根據網上版本修正設定expiry無效問題。by pwg17
///public
class
authcode
//////
從字串的指定位置擷取指定長度的子字串
//////
原字串
///子字串的起始位置
///子字串的長度
///子字串
private
static
string
cutstring(
string
str,
intstartindex,
intlength)
else}if
(startindex
>
str.length)
}else
else
else}}
if(str.length
-startindex
<
length)
return
str.substring(startindex, length);
}///
///從字串的指定位置開始擷取到字串結尾的了符串
//////
原字串
///子字串的起始位置
///子字串
private
static
string
cutstring(
string
str,
intstartindex)
//////
md5函式
//////
原始字串
///md5結果
public
static
string
md5(
string
str)
return
ret;
}///
///用於 rc4 處理密碼
//////
密碼字串
///金鑰長度,一般為 256
///private
static
byte getkey(byte pass, int32 klen)
int64 j =0
;for
(int64 i =0
; i
<
klen; i++)
return
mbox;
}///
///生成隨機字元
//////
隨機字元長度
///隨機字元
private
static
string
randomstring(
intlens)
;int
clens
=chararray.length;
string
scode =""
;random random
=new
random();
for(
inti =0
; i
<
lens; i++)
return
scode;
}///
///使用 authcode 方法對字串加密
//////
原始字串
///金鑰
///加密字串有效時間,單位是秒
///加密結果
public
static
string
discuzauthcodeencode(
string
source,
string
key,
intexpiry)
//////
使用 discuz authcode 方法對字串加密
//////
原始字串
///金鑰
///加密結果
public
static
string
discuzauthcodeencode(
string
source,
string
key)
//////
使用 discuz authcode 方法對字串解密
//////
原始字串
///金鑰
///解密結果
public
static
string
discuzauthcodedecode(
string
source,
string
key)
//////
使用 變形的 rc4 編碼方法對字串進行加密或者解密
//////
原始字串
///金鑰
///操作 加密還是解密
///密文有效期, 加密時候有效, 單 位 秒,0 為永久有效
///加密或者解密後的字串
private
static
string
discuzauthcode(
string
source,
string
key, discuzauthcodemode operation,
intexpiry)
intckey_length =4
;string
keya, keyb, keyc, cryptkey, result;
key
=md5(key);
keya
=md5(cutstring(key, 0,
16));
keyb
=md5(cutstring(key,
16,
16));
keyc
=ckey_length
>0?
(operation
==discuzauthcodemode.decode
?cutstring(source,
0, ckey_length) : randomstring(ckey_length)) : "";
cryptkey
=keya
+md5(keya
+keyc);
if(operation
==discuzauthcodemode.decode)
catch
catch
catch}}
result
=encoding.getstring(rc4(temp, cryptkey));
long
timestamp
=long
.parse(cutstring(result, 0,
10));
if((timestamp ==0
||timestamp
-unixtimestamp()
>0)
&&cutstring(result,
10,
16)
==cutstring(md5(cutstring(result,
26)
+keyb), 0,
16))
else
}else
}///
///rc4 原始演算法
//////
原始字串陣列
///金鑰
///處理後的字串陣列
private
static
byte rc4(byte input, string pass)
return
output;
}private
static
string
ascarr2str(
byte
b)public
static
long
unixtimestamp()
public
static
string
urlencode(
string
str)}}
return
tmp;
}public
static
long
time()}}
c 中的Debug版本和Release版本的區別
今天看visual c 2012 入門經典,書上描述 debug版本包括幫助使用者除錯程式的資訊,使用程式的debug版本,可以在出現問題時單步執行 以檢查程式中的資料值。release版本它不包括除錯資訊,但開啟了編譯器的 優化選項,以提供最高效的可執行模組。在使用除錯配置測試過應用程式,且看起來...
C 中的版本說明
assembly assemblyversion 1.1.assembly assemblyfileversion 1.0.0.0 assembly assemblyinformationalversion 1.2.1.0 用來定義 product version assemblyversion 儲...
C 版本掃雷
閒來無事,花了點時間寫了乙個簡單版本的掃雷,廢話不多數,開始今天的主題!掃雷簡單版玩法 控制台未加雙緩衝 進入掃雷介面後,按下空格,游標所在位置處會經行判斷,若是雷,則遊戲over,若是空白區域則展開地圖,若是帶有數字標誌的則僅展示改地圖塊,直至剩下雷區 看一下效果 難點 1.如何展示 2.如何初始...