當前位置:首頁 » 密碼管理 » 用函數加密

用函數加密

發布時間: 2023-01-05 23:59:09

php文本加密函數

給你個我常用的,也符合你的要求,很好用哦。 /**
* 採用RC4為核心演算法,通過加密或者解密用戶信息
* @param $string - 加密或解密的串
* @param $operation - DECODE 解密;ENCODE 加密
* @param $key - 密鑰 默認為AUTHKEY常量
* @return 返回字元串
*/ define('AUTHKEY', 'yl_chen');
function MooAuthCode($string, $operation = 'DECODE', $key = '', $expiry = 0) { /**
* $ckey_length 隨機密鑰長度 取值 0-32;
* 加入隨機密鑰,可以令密文無任何規律,即便是原文和密鑰完全相同,加密結果也會每次不同,增大破解難度。
* 取值越大,密文變動規律越大,密文變化 = 16 的 $ckey_length 次方
* 當此值為 0 時,則不產生隨機密鑰
*/
$ckey_length = 4;
$key = md5($key ? $key : md5(AUTHKEY.$_SERVER['HTTP_USER_AGENT']));
$keya = md5(substr($key, 0, 16));
$keyb = md5(substr($key, 16, 16));
$keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : ''; $cryptkey = $keya.md5($keya.$keyc);
$key_length = strlen($cryptkey); $string = $operation == 'DECODE' ? base64_decode(substr($string, $ckey_length)) : sprintf('%010d', $expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string;
$string_length = strlen($string); $result = '';
$box = range(0, 255); $rndkey = array();
for($i = 0; $i <= 255; $i++) {
$rndkey[$i] = ord($cryptkey[$i % $key_length]);
} for($j = $i = 0; $i < 256; $i++) {
$j = ($j + $box[$i] + $rndkey[$i]) % 256;
$tmp = $box[$i];
$box[$i] = $box[$j];
$box[$j] = $tmp;
} for($a = $j = $i = 0; $i < $string_length; $i++) {
$a = ($a + 1) % 256;
$j = ($j + $box[$a]) % 256;
$tmp = $box[$a];
$box[$a] = $box[$j];
$box[$j] = $tmp;
$result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));
} if($operation == 'DECODE') {
if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) {
return substr($result, 26);
} else {
return '';
}
} else {
return $keyc.str_replace('=', '', base64_encode($result));
}}

② 編寫一個數據加密函數(用C編寫)

這個問題並不難,兩個數組很容易實現
main()
{
int i,a[4],b[4];
printf("請輸入四個數字: ");
for(i=0;i<4;i++)
scanf("%d",a[i]);
b[0]=(a[3]+6)%8;
b[1]=(a[2]+6)%8;
b[2]=(a[1]+6)%8;
b[3]=(a[0]+6)%8;
printf("原數組是:")
for(i=0;i<4;i++)
printf("%d",a[i])
printf("加密後的數組是:")
for(i=0;i<4;i++)
printf("%d",b[i])
}

③ js使用用自定義函數加密了,已經知道加密用函數,翻譯出原文的方法,謝謝

這是ew_dc
functionew_dc(s){
vard='',k=0,a=newArray(),r;
for(i=0;i<s.length;i++){
c=s.charCodeAt(i);
if(c<128)c^=5;d+=String.fromCharCode(c);
if((i+1)%99==0){
a[k++]=d;d='';
}
}
r=a.join('')+d;
document.write(r);
}

解密
functioncd_we(r){
vard='',k=0,a=newArray(),s;
for(i=0;i<r.length;i++){
c=s.charCodeAt(i);
if(c<128)c^=5;d+=String.fromCharCode(c);
if((i+1)%99==0){
a[k++]=d;d='';
}
}
s=a.join('')+d;
document.write(s);
}
//兩個函數其實一樣O(∩_∩)O哈!把用ew_dc處理過的字元串再用它處理一次就行了

④ C語言的加密函數問題。

char* encode(const char* str)
{
int i, s;
s = 0;
for(i = 0; str[i]; i++) s += str[i] * str[i];
for(i = 0; str[i]; i++) {
if(str[i] >= 'a' && str[i] <= 'z') {
str[i] = (str[i] + s) % 128;
}
}
return str;
}
不能准確地恢復

⑤ 如何利用Mysql加密函數保護網站敏感數據

如果您正在運行使用MySQL的Web應用程序 那麼它把密碼或者其他敏感信息保存在應用程序里的機會就很大 保護這些數據免受黑客或者窺探者的獲取是一個令人關注的重要問題 因為您既不能讓未經授權的人員使用或者破壞應用程序 同時還要保證您的競爭優勢 幸運的是 MySQL帶有很多設計用來提供這種類型安全的加密函數 本文概述了其中的一些函數 並說明了如何使用它們 以及它們能夠提供的不同級別的安全 雙向加密 就讓我們從最簡單的加密開始 雙向加密 在這里 一段數據通過一個密鑰被加密 只能夠由知道這個密鑰的人來解密 MySQL有兩個函數來支持這種類型的加密 分別叫做ENCODE()和DECODE() 下面是一個簡單的實例

mysql> INSERT INTO users (username password) VALUES ( joe ENCODE( gues *** e abracadabra ));Query OK row affected ( sec)

其中 Joe的密碼是gues *** e 它通過密鑰abracadabra被加密 要注意的是 加密完的結果是一個二進制字元串 如下所示

mysql> SELECT * FROM users WHERE username= joe ;+ + +| username | password |+ + +| joe | ¡?i??!? |+ + + row in set ( sec)

abracadabra這個密鑰對於恢復到原始的字元串至關重要 這個密鑰必須被傳遞給DECODE()函數 以獲得原始的 未加密的密碼 下面就是它的使用方法

mysql> SELECT DECODE(password abracadabra ) FROM users WHERE username= joe ;+ +| DECODE(password abracadabra ) |+ +| gues *** e |+ + row in set ( sec)

應該很容易就看到它在Web應用程序里是如何運行的——在驗證用戶登錄的時候 DECODE()會用網站專用的密鑰解開保存在資料庫里的密碼 並和用戶輸入的內容進行對比 假設您把PHP用作自己的腳本語言 那麼可以像下面這樣進行查詢

<?php$query = SELECT COUNT(*) FROM users WHERE username= $inputUser AND DECODE(password abracadabra ) = $inputPass ;?> 提示 雖然ENCODE()和DECODE()這兩個函數能夠滿足大多數的要求 但是有的時候您希望使用強度更高的加密手段 在這種情況下 您可以使用AES_ENCRYPT()和AES_DECRYPT()函數 它們的工作方式是相同的 但是加密強度更高

單向加密 單向加密與雙向加密不同 一旦數據被加密就沒有辦法顛倒這一過程 因此密碼的驗證包括對用戶輸入內容的重新加密 並將它與保存的密文進行比對 看是否匹配 一種簡單的單向加密方式是MD 校驗碼 MySQL的MD ()函數會為您的數據創建一個 指紋 並將它保存起來 供驗證測試使用 下面就是如何使用它的一個簡單例子

mysql> INSERT INTO users (username password) VALUES ( joe MD ( gues *** e ));Query OK row affected ( sec)mysql> SELECT * FROM users WHERE username= joe ;+ + +| username | password |+ + +| joe | a e df f c e a |+ + + row in set ( sec)

現在您可以測試用戶輸入的內容是否與已經保存的密碼匹配 方法是取得用戶輸入密碼的MD 校驗碼 並將它與已經保存的密碼進行比對 就像下面這樣

mysql> SELECT COUNT(*) FROM users WHERE username= joe AND password=MD ( gues *** e );+ +| COUNT(*) |+ +| |+ + row in set ( sec)

或者 您考慮一下使用ENCRYPT()函數 它使用系統底層的crypt()系統調用來完成加密 這個函數有兩個參數 一個是要被加密的字元串 另一個是雙(或者多)字元的 salt 它然後會用salt加密字元串 這個salt然後可以被用來再次加密用戶輸入的內容 並將它與先前加密的字元串進行比對 下面一個例子說明了如何使用它

mysql> INSERT INTO users (username password) VALUES ( joe ENCRYPT( gues *** e ab ));Query OK row affected ( sec)mysql> SELECT * FROM users WHERE username= joe ;+ + +| username | password |+ + +| joe | ab/G gtZdMwak |+ + + row in set ( sec)

結果是

lishixin/Article/program/MySQL/201311/29366

⑥ 如何利用MySQL資料庫自帶加密函數進行加密

保護些數據免受黑客或者窺探者獲取令關注重要問題您既能讓未經授權員使用或者破壞應用程序同要保證您競爭優勢幸運MySQL帶設計用提供種類型安全加密函數本文概述其些函數並說明何使用及能夠提供同級別安全雙向加密讓我簡單加密始:雙向加密段數據通密鑰加密能夠由知道密鑰解密mysql兩函數支持種類型加密別叫做ENCODE()DECODE()面簡單實例:mysql> INSERT INTO users (username, password) VALUES ('joe', ENCODE('guessme', 'abracadabra'));
Query OK, 1 row affected (0.14 sec)其Joe密碼guessme通密鑰abracadabra加密要注意加密完結二進制字元串所示:mysql> SELECT * FROM users WHERE username='joe';
+----------+----------+
| username | password |
+----------+----------+
| joe | 03?i?!? |
+----------+----------+
1 row in set (0.02 sec)abracadabra密鑰於恢復原始字元串至關重要密鑰必須傳遞給DECODE()函數獲原始、未加密密碼面使用:mysql> SELECT DECODE(password, 'abracadabra') FROM users WHERE username='joe';+---------------------------------+
| DECODE(password, 'abracadabra') |
+---------------------------------+
| guessme |
$query = "SELECT COUNT(*) FROM users WHERE username='$inputUser' AND DECODE(password, 'abracadabra') = '$inputPass'";?>提示:雖ENCODE()DECODE()兩函數能夠滿足數要求候您希望使用強度更高加密手段

⑦ postgresql數據加密函數使用

可以採用md5函數進行數據加密存儲和校驗
<pre>
create table usertable(id serial,PASSWORD text);

insert into usertable (PASSWORD) values(md5('222222'));
insert into usertable (PASSWORD) values(md5('111111'));

SELECT * from usertable where PASSWORD=md5('222222')
</pre>
更加安全的是採用加鹽模式,密碼相同但是結果不同
<pre>
insert into usertable(password) values (crypt('123456',gen_salt('md5')));
insert into usertable(password) values (crypt('123456',gen_salt('md5')));
SELECT * from usertable where PASSWORD=crypt('123456',password);

2 $1$LEt6lBlJ$cSucnCctkaLU2tXCLCpLk0
3 $1$tP/w8ICv$Ucx9BP9j/eWmuAtiJjbTP/
</pre>

附:函數
**crypt()
crypt(password text, salt text) returns text
Calculates a crypt(3)-style hash of password. When storing a new password, you need to use gen_salt() to generate a new salt value. To check a password, pass the stored hash value as salt, and test whether the result matches the stored value.

crypt() 函數支持的加密演算法**

**gen_salt()
gen_salt(type text [, iter_count integer ]) returns text
Generates a new random salt string for use in crypt(). The salt string also tells crypt() which algorithm to use.The type parameter specifies the hashing algorithm. The accepted types are: des, xdes, md5 and bf.

⑧ 怎麼用哈希函數給資料庫中的密碼加密

可以使用 System.Security.Cryptography 名稱空間中包含的加密資源方便地生成和比較哈希值。 因為所有哈希函數的輸入類型都是 Byte[],所以必須先將源數據轉換為位元組數組後再計算哈希值。 若要為一個字元串值創建哈希值,請按照下列步驟操作: 打開 Visual Studio .NET。 在 Microsoft C# 中新建控制台應用程序。Visual C# .NET 為您創建一個公用類以及一個空的 Main() 方法。 對 System、System.Security.Cryptography 和 System.Text 名稱空間使用 using 指令,這樣,在後面的代碼中就不需要限定這些名稱空間中的聲明了。這些語句必須放在所有其他聲明之前。 using System; using System.Security.Cryptography; using System.Text; 聲明一個字元串變數以存放源數據,並聲明兩個位元組數組(未定義大小)分別存放源位元組和得出的哈希值。 s

⑨ MySQL函數的加密函數

a) 函數 AES_ENCRYPT(str ,key_str ) , AES_DECRYPT(crypt_str ,key_str )
函數使用說明:這些函數允許使用官方 AES 進行加密和數據加密 ( 高級加密標准 ) 演算法 , 即以前人們所熟知的 「Rijndael」 。 保密關鍵字的長度為 128 比特,不過你可以通過改變源而將其延長到 256 比特。我們選擇了 128 比特的原因是它的速度要快得多,且對於大多數用途而言這個保密程度已經夠用。
b) 函數DECODE(crypt_str ,pass_str )
函數使用說明:使用 pass_str 作為密碼,解密加密字元串 crypt_str , crypt_str 應該是由 ENCODE() 返回的字元串。
c) 函數 ENCODE(str ,pass_str )
函數使用說明:使用 pass_str 作為密碼,解密 str 。 使用 DECODE() 解密結果。
d) 函數 DES_DECRYPT(crypt_str [,key_str ])
函數使用說明:使用 DES_ENCRYPT() 加密一個字元串。若出現錯誤,這個函數會返回 NULL 。
e) 函數 DES_ENCRYPT(str [,(key_num |key_str )])
函數使用說明:用 Triple-DES 演算法給出的關鍵字加密字元串。若出現錯誤,這個函數會返回 NULL 。
f) 函數 ENCRYPT(str [,salt ])
函數使用說明:使用 Unix crypt() 系統調用加密 str 。 salt 參數應為一個至少包含 2 個字元的字元串。若沒有給出 salt 參數,則使用任意值。
g) 函數 MD5(str )
函數使用說明:為字元串算出一個 MD5 128 比特檢查和。該值以 32 位十六進制數字的二進制字元串的形式返回 , 若參數為 NULL 則會返回 NULL 。例如,返回值可被用作散列關鍵字
h) 函數 OLD_PASSWORD(str )
函數使用說明:當 PASSWORD() 的執行變為改善安全性時, OLD_PASSWORD() 會被添加到 MySQL 。 OLD_PASSWORD() 返回從前的 PASSWORD() 執行值 ( 4.1 之前 ) ,同時允許你為任何 4.1 之前的需要連接到你的 5.1 版本 MySQL 伺服器前客戶端設置密碼,從而不至於將它們切斷
i) 函數PASSWORD(str )
函數使用說明:從原文密碼str 計算並返回密碼字元串,當參數為 NULL 時返回 NULL 。這個函數用於用戶授權表的Password 列中的加密MySQL 密碼存儲

⑩ 關於js 函數加密

<pre t="code" l="js">你可以到網上下面所用的js文件。
1、base64加密
在頁面中引入base64.js文件,調用方法為:
<script type="text/javascript" src="base64.js"></script>
<script type="text/javascript">
var b = new Base64();
var str = b.encode("admin:admin");
alert("base64 encode:" + str);
str = b.decode(str);
alert("base64 decode:" + str);
</script>
2、md5加密
在頁面中引用md5.js文件,調用方法為
<script type="text/ecmascript" src="md5.js"></script>
<script type="text/javascript">
var hash = hex_md5("123dafd");
alert(hash)
</script>
3、sha1加密
據說這是最安全的加密
頁面中引入sha1.js,調用方法為
<script type="text/ecmascript" src="sha1.js"></script>
<script type="text/javascript">
var sha = hex_sha1('mima')
alert(sha)
</script>

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:593
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:888
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:582
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:765
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:684
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1013
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:255
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:114
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:806
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:713