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
但是如果这真是密码那么就不能知道到底是什么意思了。