1. 面向對象基礎知識之文件加密解密
文件加密解密是開發中經常用到的一個功能點,常見於客戶端項目,需要對配置數據、參數設置、數據字典等需要隱匿,來增強客戶端的安全性。
本章我們介紹兩種常見文件加密解密方法
1.自定義加密解密函數,思路是文件轉成Byte[],對byte元素使用對稱加密演算法對齊加密。加密後的byte[]轉成base64。解密文件使用base64加密的byte[]解密即可生成原文件。
2.使用 System.Security.Cryptography. RijndaelManaged,這種加密需要提供32位密碼和16位向量密碼
//加密
string pwd = "" ; //32位,密碼
string ivpwd = "gjhdjfhdjdkdssad" ; //16位,向量密碼
RijndaelManaged aes = new RijndaelManaged();
byte [] pwdBytes = System.Text.Encoding.UTF8.GetBytes(pwd);
aes.Key = pwdBytes;
aes.IV = Encoding.UTF8.GetBytes(ivpwd);
aes.Mode = CipherMode.CBC;
aes.Padding = PaddingMode.PKCS7;
byte [] readFileByte = ReadByte(filePath);
ICryptoTransform transform = aes.CreateEncryptor();
byte [] fielBuffer = transform.TransformFinalBlock(readFileByte, 0, readFileByte.Length); //注意這里返回的是加密後的byte[]
//解密
RijndaelManaged aes = new RijndaelManaged();
byte [] pwdBytes = System.Text.Encoding.UTF8.GetBytes(pwd);
aes.Key = pwdBytes;
aes.IV = Encoding.UTF8.GetBytes(ivpwd);
aes.Mode = CipherMode.CBC;
aes.Padding = PaddingMode.PKCS7;
byte [] readFileByte = ReadByte(filePath);
ICryptoTransform transform = aes.CreateDecryptor();
//注意這里返回的是解密後的byte[]
byte [] fielBuffer = transform.TransformFinalBlock(readFileByte, 0, readFileByte.Length);
加密方式越復雜需要的計算量越大,速度相應會變慢;加密方式需要結合項目來做選擇。客戶端項目對於數據保密性較強建議使用RSA和 RijndaelManaged 混合加密。
2. 編碼 UTF8加密方式 AES 運算模式 ECB 填充模式 零位元組組成的字元串 塊大小 128(位)密文傳輸編碼 BASE64
我找到了解決我的問題。為了使加密工作,而填充我不得不補充,而不是kCCOptionPKCS7Padding或kCCOptionECBMode均會被視為為0x0000。此外,如果需要被編碼的數據不具有kCCKeySizeAES128的長度數倍(16),然後保存該數據的矢量必須被調整到具有多個長度與kCCKeySizeAES128並充滿我加空格的空值。-(NSData*)AES128EncryptWithKey:(NSString*)key{charkeyPtr[kCCKeySizeAES128+1];bzero(keyPtr,sizeof(keyPtr));[keygetCString:keyPtrmaxLength:sizeof(keyPtr)encoding:NSUTF8StringEncoding];intdataLength=[selflength];intdiff=kCCKeySizeAES128-(dataLength%kCCKeySizeAES128);intnewSize=0;if(diff>0){newSize=dataLength+diff;}chardataPtr[newSize];memcpy(dataPtr,[selfbytes],[selflength]);for(inti=0;i
3. 在utf-8編碼下無法用md5加密漢字
你把md5的演算法放在JAVABEAN中,我用了顯示正常啊
如
中華人民共和國加密後是:
4. 求php aes加密代碼,編碼是UTF-8
$key=pack('H*',"");
//顯示AES-128,192,256對應的密鑰長度:
//16,24,32位元組。
$key_size=strlen($key);
echo"Keysize:".$key_size." ";
$plaintext="ThisstringwasAES-256/CBC/ZeroBytePaddingencrypted.";
$iv_size=mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128,MCRYPT_MODE_CBC);
$iv=mcrypt_create_iv($iv_size,MCRYPT_RAND);$ciphertext=mcrypt_encrypt(MCRYPT_RIJNDAEL_128,$key,
$plaintext,MCRYPT_MODE_CBC,$iv);
5. micro python的編碼突然被加密到UTF-8了是怎麼回事
填utf8哦親
utf8首先並不是一種加密方式,而是一種文字編碼哦
6. utf-8和base64什麼區別啊
答:
可以這么理解,iso88591和utf-8編碼是為了語言的需要。比如說中文可以用utf-8編碼,但是不能用iso88591這種編碼,因為iso88591設計的時候就沒有考慮過中文漢字那麼多,因此只能顯示字母數字和一些符號,而utf8這種變長編碼可以容納非常多的字元,可以用來表示足夠多的漢字。所以一個utf8編碼的文本用只支持iso88591的編輯器打開就會亂碼。
而url編碼和base64編碼則完全不同。比如url編碼只是為了將一些http請求中不支持的特殊字元轉換成支持的字元組合。base64編碼則是從二進制層面來說,將二進制流使用64個字元的組合表示。
以下是base64參數表
7. UTF-8編碼 解釋
這個個你從哪裡得來的數據呢?這一看就像是一串密碼.如果按其是utf-8轉換後得到的數據是
370063003600350035003
但是如果這真是密碼那麼就不能知道到底是什麼意思了。