C#/.NET/Android/Java/IOS AES通用加密解密算法
程序员文章站
2022-01-18 10:04:12
...
记得前几天分享了一个Android IOS Java通用的AES128加密解密Demo、这个Demo可以满足用Java开发的后端接口、但是如果不巧你用的.net开发的后台程序、那么我们又应该怎么去编写后端的程序呢!
今天再给大家分享一个比较强大的Demo、可以同时支持Android IOS Java .NET的加密解密的算法Demo、希望对大家有用、今天分享了两个Demo、一个是用CBC模式加密的android、java、ios、.net通用模式、另外一个是ECB模式的android、java、ios、.net通用的加密模式
IOS AES加密
//将string转成带密码的data (NSString*)encryptAESData:(NSString*)string { //将nsstring转化为nsdata NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding]; //使用密码对nsdata进行加密 NSData *encryptedData = [data AES128EncryptWithKey:KEY gIv:Iv]; //返回进行base64进行转码的加密字符串 return [self encodeBase64Data:encryptedData]; }
IOS AES解密
//将带密码的data转成string (NSString*)decryptAESData:(NSString *)string { //base64解密 NSData *decodeBase64Data=[GTMBase64 decodeString:string]; //使用密码对data进行解密 NSData *decryData = [decodeBase64Data AES128DecryptWithKey:KEY gIv:Iv]; //将解了密码的nsdata转化为nsstring NSString *str = [[NSString alloc] initWithData:decryData encoding:NSUTF8StringEncoding]; return str; }
.NET AES加密
public static string Decrypt(string toDecrypt, string key, string iv) { byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key); byte[] ivArray = UTF8Encoding.UTF8.GetBytes(iv); byte[] toEncryptArray = Convert.FromBase64String(toDecrypt); RijndaelManaged rDel = new RijndaelManaged(); rDel.Key = keyArray; rDel.IV = ivArray; rDel.Mode = CipherMode.CBC; rDel.Padding = PaddingMode.Zeros; ICryptoTransform cTransform = rDel.CreateDecryptor(); byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); return UTF8Encoding.UTF8.GetString(resultArray); }
public static string Encrypt(string toEncrypt, string key, string iv) { byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key); byte[] ivArray = UTF8Encoding.UTF8.GetBytes(iv); byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt); RijndaelManaged rDel = new RijndaelManaged(); rDel.Key = keyArray; rDel.IV = ivArray; rDel.Mode = CipherMode.CBC; rDel.Padding = PaddingMode.Zeros; ICryptoTransform cTransform = rDel.CreateEncryptor(); byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); return Convert.ToBase64String(resultArray, 0, resultArray.Length); }
// 加密 public String encrypt(String sSrc) throws Exception { Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); byte[] raw = sKey.getBytes(); SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES"); IvParameterSpec iv = new IvParameterSpec(ivParameter.getBytes());// 使用CBC模式,需要一个向量iv,可增加加密算法的强度 cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv); byte[] encrypted = cipher.doFinal(sSrc.getBytes("utf-8")); return new BASE64Encoder().encode(encrypted);// 此处使用BASE64做转码。 }
Android Java解密
// 解密 public String decrypt(String sSrc) throws Exception { try { byte[] raw = sKey.getBytes("ASCII"); SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES"); Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); IvParameterSpec iv = new IvParameterSpec(ivParameter.getBytes()); cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv); byte[] encrypted1 = new BASE64Decoder().decodeBuffer(sSrc);// 先用base64解密 byte[] original = cipher.doFinal(encrypted1); String originalString = new String(original, "utf-8"); return originalString; } catch (Exception ex) { return null; } }
以上是部分代码、为了让大家在使用的时候更为方法、给大家做了三个Demo、大家可以直接下载使用
ios android .net加密解密源代码下载链接: android ios .net aes加密 密码: v83v
上一篇: eclipse快捷键大全
下一篇: statsvn 统计svn代码量