Rijndael
Êô¶Ô³Æ¼ÓÃÜ£¬¶Ô³Æ¼ÓÃÜÔÚ¼ÓÃܺͽâÃÜʱ¶¼Ê¹ÓÃÏàͬµÄÃÜÔ¿¡£2000 Äê 10 Ô£¬NIST Ñ¡Ôñ Rijndael£¨·¢ÒôΪ "Rhine dale"£©×÷Ϊ AES Ëã·¨£¬ÓÃÒÔÈ¡´ú DES¡£
Rijndael µÄÃû³Æ¿Õ¼äÊÇ£º
System.Security.Cryptography
byte[] plaintextBuffer = System.Text.Encoding.UTF8.GetBytes("Ã÷ÎÄ");
//¼ÓÃÜ
Rijndael rijndael = Rijndael.Create();
ICryptoTransform transform = rijndael.CreateEncryptor();
byte[] cipherTextBuffer = transform.TransformFinalBlock(plaintextBuffer, 0, plaintextBuffer.Length);
lbl.Text = Convert.ToBase64String(cipherTextBuffer) + "<br />";
transform.Dispose();
//½âÃÜ
Rijndael rijndael2 = Rijndael.Create();
ICryptoTransform transform2 = rijndael2.CreateDecryptor(rijndael.Key, rijndael.IV);
byte[] decryption = transform2.TransformFinalBlock(cipherTextBuffer, 0, cipherTextBuffer.Length);
lbl.Text += System.Text.Encoding.UTF8.GetString(decryption) + "<br />";
transform2.Dispose();
½âÃÜʱ£¬Ê¹ÓüÓÃÜµÄ Key ºÍ IV¡£ ......
Òª°²È«µØ´æ´¢ÃÜÔ¿£¬Ó¦½«ÃÜÔ¿´æ·ÅÔÚÃÜÔ¿ÈÝÆ÷ÖУ¬¶ø²»ÊÇÃ÷ÎÄ´æ·ÅÔÚÎļþÖС£
Èç¹ûÄú²»Á˽âÃÜÔ¿ÈÝÆ÷£¬¿ÉÒÔ²ÎÕÕ MSDN É쵀 ÁË½â¼ÆËã»ú¼¶±ðºÍÓû§¼¶±ðµÄ RSA ÃÜÔ¿ÈÝÆ÷
¡£
CspParameters
µÄÃû³Æ¿Õ¼äÊÇ£º
System.Security.Cryptography
´´½¨ºÍ¶ÁÈ¡ÃÜÔ¿ÈÝÆ÷
CspParameters cp = new CspParameters();
cp.KeyContainerName = ContainerName;
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(cp);
´´½¨ºÍ¶ÁÈ¡ÃÜÔ¿ÈÝÆ÷¶¼Ê¹ÓÃÉÏÊö´úÂ룺Èç¹ûÃÜÔ¿ÈÝÆ÷²»´æÔÚ£¬Ôò»á×Ô¶¯´´½¨£¬²¢½« rsa ²úÉúµÄÃÜÔ¿´æÈëÆäÖУ»Èç¹ûÒѾ´æÔÚ£¬Ôò»á¶ÁÈ¡ÆäÖеÄÃÜÔ¿¸ø rsa¡£
ɾ³ýÃÜÔ¿ÈÝÆ÷
CspParameters cp = new CspParameters();
cp.KeyContainerName = ContainerName;
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(cp);
rsa.PersistKeyInCsp = false;
rsa.Clear();
Óë´´½¨ºÍ¶ÁÈ¡Ïà±È£¬¶àÁËÁ½¾ä¡£
°²È«ÐÔ£º³ÌÐò A ´´½¨ºÍÃÜÔ¿ÈÝÆ÷£¬³ÌÐò B ¿ÉÒÔÈ¥¶ÁÂð£¿
¿ÉÒÔ¡£Èç¹ûÒªÏÞÖÆ³ÌÐò B È¥¶Á£¬Çë²Î¼ûÉÏÃæÌáµ½µÄÁË½â¼ÆËã»ú¼¶±ðºÍÓû§¼¶±ðµÄ RSA ÃÜÔ¿ÈÝÆ÷
¡£ ......
ÔÚ System.Security.Cryptography ÖУ¬ÎÒÃÇ¿ÉÒÔ¿´µ½ÓÐÐí¶àÀ࣬ÓÐЩÀ໹ºÜÏàËÆ£¬±ÈÈ磺
System.Security.Cryptography.SHA1
System.Security.Cryptography.SHA1Managed
System.Security.Cryptography.SHA1CryptoServiceProvider
ÕâÈý¸öÀàÓÐʲô¹ØÏµÄØ£¿
SHA1
ÊdzéÏóÀà
£¬SHA1Managed
ºÍ SHA1CryptoServiceProvider
¼Ì³ÐÓÚ SHA1¡£
SHA1Managed ºÍ SHA1CryptoServiceProvider ÓÐÊ²Ã´Çø±ðÄØ£¿
SHA1Managed ±»Ð´ÈëÁËÍÐ¹Ü .NET ÓïÑÔ£¨±ÈÈ磺C#¡¢VB.NET£©£»¶ø SHA1CryptoServiceProvider
ÊÇ»ùÓÚ Windows Crypto API µÄ£¬Ò²¾ÍÊÇ˵ËüÊÇÒÀÀµÓÚ Windows ÖÐij¸ö DLL µÄ¡£¾Ý˵ºóÕßÐÔÄÜÒª¸ßЩ¡£
ÆäËûÒÔ Managed ºÍ Provider ½áβµÄÀàÒ²ÊÇÉÏÊöµÀÀí¡£ ......
ÎÊ£ºC# ¼ÓÃܺóΪºÎÓÐÁ½ÖÖ½á¹ûµÄ×Ö·û´®£¿
±ÈÈç cftea µÄ MD5 ¼ÓÃܺó£º
ÓеÄÈ˵Ľá¹ûÊÇ£ºc2e1861ca90e67ce1f9a62f9c27d8bdc
ÓеÄÈ˵Ľá¹ûÊÇ£ºwuGGHKkOZ84fmmL5wn2L3A
´ð£ºÕâÊǶÔ×Ö½ÚµÄÁ½ÖÖ²»Í¬±íʾ½á¹û¡£
µÚÒ»ÖÖÊÇÓÃÊ®Áù½øÖƱíʾµÄ£¨FormsAuthentication.HashPasswordForStoringInConfigFile ¾ÍÊÇÕâÖÖ£¬Ö»ÊÇÊÇ´óдµÄ£©£¬¾ßÌåÇë²Î¼û BitConverter
¡£Èç¹ûÓà BitConverter ʱûÓÐÌæ»»µô“-”µÄ»°£¬¼ÓÃܽá¹ûÖл¹»áÓГ-”·Ö¸ô¿ª¡£
µÚ¶þÖÖÊÇÓÃµÄ Base64 ±àÂ룬¾ßÌåÇë²Î¼û Base64 ±àÂë¼ò½é
¡£ ......
1. C++ËäÈ»Ö÷ÒªÊÇÒÔCµÄ»ù´¡·¢Õ¹ÆðÀ´µÄÒ»ÃÅÐÂÓïÑÔ£¬µ«Ëý²»ÊÇCµÄÌæ´úÆ·£¬²»ÊÇCµÄÉý¼¶£¬C++ºÍCÊÇÐֵܹØÏµ¡£Ã»ÓÐ˱ÈËÏȽøµÄ˵·¨£¬¸üÖØÒªµÄÒ»µãÊÇCºÍC++¸÷×Եıê׼ίԱ»áÊǶÀÁ¢µÄ£¬×îеÄC++±ê×¼ÊÇC++98£¬×îеÄC±ê×¼ÊÇC99¡£Òò´ËҲûÓÐÏÈѧCÔÙ˵C++µÄ˵·¨£¬Ò²²»ÔÙ£¨×¢ÒâÕâ¸ö"²»ÔÙ"£©ÓÐC++Óï·¨ÊÇCÓï·¨µÄ³¬¼¯µÄ˵·¨¡£
2. C++/CLI ºÍ C# ÊÇ΢ÈíµÄ£¬ËüÃÇÓëCºÍC++ûÓÐÈκιØÏµ£¬ËäÈ»²¿·ÖÓï·¨ÏàËÆ¡£µ«ÄÄÁ½ÖÖÓïÑÔ²»ÏàËÆÄØ£¿¶¼ÊÇabcÕâ26¸ö×Öĸ¡£
3. ²»ÒªÊ¹ÓÃTC/TC++/BC/CBµÈ¹ÅÀϵıàÒëÆ÷À´Ñ§Ï°C/C++£¬ÒòΪËüÃÇÌ«¹ÅÀÏÁË£¬²»Ö§³ÖеÄC/C++±ê×¼¡£²»ÒªÊ¹ÓÃCBX/VC++6.0/VC2005µÈ¶ÔC/C++±ê×¼Ö§³Ö²»ºÃµÄ±àÒëÆ÷£¬ËäÈ»ÕâЩ±àÒëÆ÷ÊʺϹ¤×÷£¬µ«²»ÊʺÏѧϰ£¬ÒòΪËüÃÇÖеÄÓï·¨ÏÝÚåºÜ¶à¡£¼ÇסΨһÊʺÏѧϰµÄ±àÒëÆ÷ÊÇgcc/mingw¡£[antigloss×¢£ºDev-C++ ʹÓõıàÒëÆ÷¾ÍÊÇgcc & g++]
4. ²»ÒªÓÃ""´úÌæ<>À´°üº¬ÏµÍ³Í·Îļþ£¬ËäÈ»ÓÐЩ±àÒëÆ÷ÔÊÐíÄãÕâÑù×ö£¬µ«Ëü²»·ûºÏC/C++±ê×¼¡£
´íÎóµÄʾÀý£º#include "stdio.h"£¬#include "iostream"¡£[antigloss×¢£ºÏ°¹ßÉÏ£¬<> ÓÃÓÚ°üº¬±ê׼ͷÎļþºÍϵͳͷÎļþ£¬"" ÓÃÓÚ°üº¬×Ô¶¨ÒåÍ·Îļþ¡£±ê×¼ËÆºõûÓÐÃ÷È·¹æ¶¨²»×¼Óà "" °üº¬±ê׼ͷÎļþºÍϵͳͷÎļþ¡£Ê ......
1. C++ËäÈ»Ö÷ÒªÊÇÒÔCµÄ»ù´¡·¢Õ¹ÆðÀ´µÄÒ»ÃÅÐÂÓïÑÔ£¬µ«Ëý²»ÊÇCµÄÌæ´úÆ·£¬²»ÊÇCµÄÉý¼¶£¬C++ºÍCÊÇÐֵܹØÏµ¡£Ã»ÓÐ˱ÈËÏȽøµÄ˵·¨£¬¸üÖØÒªµÄÒ»µãÊÇCºÍC++¸÷×Եıê׼ίԱ»áÊǶÀÁ¢µÄ£¬×îеÄC++±ê×¼ÊÇC++98£¬×îеÄC±ê×¼ÊÇC99¡£Òò´ËҲûÓÐÏÈѧCÔÙ˵C++µÄ˵·¨£¬Ò²²»ÔÙ£¨×¢ÒâÕâ¸ö"²»ÔÙ"£©ÓÐC++Óï·¨ÊÇCÓï·¨µÄ³¬¼¯µÄ˵·¨¡£
2. C++/CLI ºÍ C# ÊÇ΢ÈíµÄ£¬ËüÃÇÓëCºÍC++ûÓÐÈκιØÏµ£¬ËäÈ»²¿·ÖÓï·¨ÏàËÆ¡£µ«ÄÄÁ½ÖÖÓïÑÔ²»ÏàËÆÄØ£¿¶¼ÊÇabcÕâ26¸ö×Öĸ¡£
3. ²»ÒªÊ¹ÓÃTC/TC++/BC/CBµÈ¹ÅÀϵıàÒëÆ÷À´Ñ§Ï°C/C++£¬ÒòΪËüÃÇÌ«¹ÅÀÏÁË£¬²»Ö§³ÖеÄC/C++±ê×¼¡£²»ÒªÊ¹ÓÃCBX/VC++6.0/VC2005µÈ¶ÔC/C++±ê×¼Ö§³Ö²»ºÃµÄ±àÒëÆ÷£¬ËäÈ»ÕâЩ±àÒëÆ÷ÊʺϹ¤×÷£¬µ«²»ÊʺÏѧϰ£¬ÒòΪËüÃÇÖеÄÓï·¨ÏÝÚåºÜ¶à¡£¼ÇסΨһÊʺÏѧϰµÄ±àÒëÆ÷ÊÇgcc/mingw¡£[antigloss×¢£ºDev-C++ ʹÓõıàÒëÆ÷¾ÍÊÇgcc & g++]
4. ²»ÒªÓÃ""´úÌæ<>À´°üº¬ÏµÍ³Í·Îļþ£¬ËäÈ»ÓÐЩ±àÒëÆ÷ÔÊÐíÄãÕâÑù×ö£¬µ«Ëü²»·ûºÏC/C++±ê×¼¡£
´íÎóµÄʾÀý£º#include "stdio.h"£¬#include "iostream"¡£[antigloss×¢£ºÏ°¹ßÉÏ£¬<> ÓÃÓÚ°üº¬±ê׼ͷÎļþºÍϵͳͷÎļþ£¬"" ÓÃÓÚ°üº¬×Ô¶¨ÒåÍ·Îļþ¡£±ê×¼ËÆºõûÓÐÃ÷È·¹æ¶¨²»×¼Óà "" °üº¬±ê׼ͷÎļþºÍϵͳͷÎļþ¡£Ê ......
µ±Òª½»»»Á½¸öÊýµÄֵʱ£¬Í¨³£µÄ×ö·¨ÊǶ¨ÒåÒ»¸öÁÙʱ±äÁ¿£¬È»ºóÔÙ½øÐн»»»¡£ÄÇôÄܲ»Äܲ»ÓÃÁÙʱ±äÁ¿¶ø½»»»Á½¸öÊýµÄֵĨ£¿¿ÉÒԵģ¡CÓïÑÔÌṩµÄÒì»òÔËËã¾Í¿ÉÒÔʵÏÖÕâÑùµÄ²Ù×÷¡£
Òì»òÔËËã·û^Ò²³ÆXORÔËËã·û£¬ËüµÄ¹æÔòÊÇÈô²Î¼ÓÔËËãµÄÁ½¸ö¶þ½øÎ»Í¬ºÅ£¬Ôò½á¹ûΪ0£¨¼Ù£©£»ÒìºÅΪ1£¨Õ棩¡£¼´0 ^ 0 = 0, 0 ^ 1 = 1, 1 ^ 0 = 1, 1 ^ 1 = 0¡£
Àý£º
#include <stdio.h>
int main(int argc, char *argv[])
{
int a = 2, b = 6;
a = a ^ b;
b = b ^ a;
a = a ^ b;
printf("a = %d b = %d\n", a, b);
return 0;
}
½á¹ûÈçÏÂ: a = 6 b = 2
·ÖÎö£ºÇ°Á½¸ö¸³ÖµÓï¾ä£º“a = a ^ b£»”ºÍ“b = b ^ a£»”Ï൱ÓÚb = b ^ (a ^ b)£¬¶øb ^ a ^ bµÈÓÚa ^ b ^ b¡£b ^ bµÄ½á¹ûΪ0£¬ÒòΪͬһ¸öÊýÓëÏàÏòÏà^£¬½á¹û±ØÎª0¡£Òò´ËbµÄÖµµÈÓÚa ^ 0£¬¼´a£¬ÆäֵΪ2¡£
ÔÙÖ´ÐеÚÈý¸ö¸³ÖµÓï¾ä£º“a = a ^ b”¡£ÓÉÓÚaµÄÖµµÈÓÚ(a ^ b)£¬bµÄÖµµÈÓÚ(b ^ a ^ b)£¬Òò´Ë£¬Ï൱ÓÚa = a ^ b ^ b ^ a ^ b£¬¼´aµÄ ......