/*
* 需要注意的是,這裡加密的是位元組陣列,而不是字串。因為 c# 字串是按照 unicode 編碼儲存的。
* 要加密字串的話,需要用 system.text.encoding.utf8 (或者其他編碼器)的 getbytes 方法轉化為位元組陣列,然後才能對其加密,金鑰也是一樣的。
* 金鑰長度是 128 位,也就是 16 個元素的位元組陣列,不過少於 16 個位元組或多於 16 個位元組都可以正常工作,
* 少於 16 個位元組時,會自動通過補零來充填到 16 個位元組,多於 16 個位元組之後的元素會被忽略。
* 另外還需要注意一點,加密以後的內容也是位元組陣列,但是你不能用 system.text.encoding.utf8 把它轉化為字串,否則會造成資訊丟失。
* system.text.encoding encoder = system.text.encoding.utf8;
* byte data = xxtea.encrypt(encoder.getbytes(textbox1.text), encoder.getbytes("1234567890abcdef"));
* textbox2.text = system.convert.tobase64string(data);
* */
using system;
class xxtea
return tobytearray(encrypt(touint32array(data, true), touint32array(key, false)), false);
}public static byte decrypt(byte data, byte key)
return tobytearray(decrypt(touint32array(data, false), touint32array(key, false)), true);
}public static uint32 encrypt(uint32 v, uint32 k)
if (k.length < 4)
uint32 z = v[n], y = v[0], delta = 0x9e3779b9, sum = 0, e;
int32 p, q = 6 + 52 / (n + 1);
while (q-- > 0)
y = v[0];
z = unchecked(v[n] += (z >> 5 ^ y << 2) + (y >> 3 ^ z << 4) ^ (sum ^ y) + (k[p & 3 ^ e] ^ z));
}return v;
}public static uint32 decrypt(uint32 v, uint32 k)
if (k.length < 4)
uint32 z = v[n], y = v[0], delta = 0x9e3779b9, sum, e;
int32 p, q = 6 + 52 / (n + 1);
sum = unchecked((uint32)(q * delta));
while (sum != 0)
z = v[n];
y = unchecked(v[0] -= (z >> 5 ^ y << 2) + (y >> 3 ^ z << 4) ^ (sum ^ y) + (k[p & 3 ^ e] ^ z));
sum = unchecked(sum - delta);
}return v;
}private static uint32 touint32array(byte data, boolean includelength)
else
n = data.length;
for (int32 i = 0; i < n; i++)
return result;
}private static byte tobytearray(uint32 data, boolean includelength)
else
byte result = new byte[n];
for (int32 i = 0; i < n; i++)
return result;}}
呼叫:public partial class form1 : form
private void button1_click(object sender, eventargs e)
private void button2_click(object sender, eventargs e)
catch (exception)}}
跨平台的加密演算法XXTEA的封裝
原文 xxtea演算法的結構非常簡單,只需要執行加法 異或和寄存的硬體即可,且軟體實現的 非常短小,具有可移植性。xxtea可對連續記憶體資料進行方便快速的加密解密,且比較安全,但其使用不是很方便,因此有了此次封裝。封裝好的介面如下 created by on 12 7 24.此類是對xxtea官方...
xxtea 微控制器資料加密演算法
各位大俠在做資料傳輸時,有沒有考慮過把資料加密起來進行傳輸,若在串列埠或者無線中把所要傳的資料加密起來,豈不是增加了通訊的安全性。常用的加密解密演算法比如des rsa等,受限於微控制器的記憶體和運算速度,實現起來比較困難,但一種叫tea的加密演算法特別適合微控制器使用。tea tiny encry...
對稱加密演算法 DES加密演算法
一 對稱加密演算法 對稱加密也稱為常規加密 私鑰或單鑰加密。乙個對稱加密由5部分組成 明文 plaintext 這是原始資訊或資料,作為演算法的輸入。加密演算法 encryption algorithm 加密演算法對明文進行各種替換和轉換。金鑰 secret key 金鑰也是演算法的輸入。演算法進行...