对称加密:就是采用这种加密方法的双方使用方式用同样的密钥进行加密和解密。密钥是控制加密及解密过程的指令。算法是一组规则,规定如何进行加密和解密。
因此加密的安全性不仅取决于加密算法本身,密钥管理的安全性更是重要。因为加密和解密都使用同一个密钥,如何把密钥安全地传递到解密者手上就成了必须要解决的问题。
由此可见密钥传递也是比较重要的一环,一般都是通过对密钥二次加密的方式,进行密钥的传输
加密实现代码:
- public static byte[] encryptStringToBytes_AES(byte[] fileContentBytes, byte[] Key, byte[] IV)
- {
- // Check arguments.
- if (fileContentBytes == null || fileContentBytes.Length <= 0)
- throw new ArgumentNullException("plainText");
- if (Key == null || Key.Length <= 0)
- throw new ArgumentNullException("Key");
- if (IV == null || IV.Length <= 0)
- throw new ArgumentNullException("IV");
- MemoryStream msEncrypt = null;
- AesCryptoServiceProvider aesAlg = null;
- try
- {
- aesAlg = new AesCryptoServiceProvider();
- aesAlg.Padding = PaddingMode.PKCS7;
- aesAlg.Key = Key;
- aesAlg.IV = IV;
- ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
- msEncrypt = new MemoryStream();
- using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
- {
- csEncrypt.Write(fileContentBytes, 0, fileContentBytes.Length);
- csEncrypt.FlushFinalBlock();
- }
- }
- catch (Exception ex)
- {
- }
- finally
- {
- if (aesAlg != null)
- aesAlg.Clear();
- }
- return msEncrypt.ToArray();
- }
解密代码实现:
- public static byte[] decryptBytes(byte[] cipherText, byte[] Key, byte[] IV)
- {
- if (cipherText == null || cipherText.Length <= 0)
- throw new ArgumentNullException("cipherText");
- if (Key == null || Key.Length <= 0)
- throw new ArgumentNullException("Key");
- if (IV == null || IV.Length <= 0)
- throw new ArgumentNullException("IV");
- AesCryptoServiceProvider aesAlg = null;
- byte[] buffer = null;
- try
- {
- using (aesAlg = new AesCryptoServiceProvider())
- {
- aesAlg.Padding = PaddingMode.PKCS7;
- aesAlg.Key = Key;
- aesAlg.IV = IV;
- ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);
- using (MemoryStream msDecrypt = new MemoryStream(cipherText))
- {
- CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read);
- byte[] tempbuffer = new byte[cipherText.Length];
- int totalBytesRead = csDecrypt.Read(tempbuffer, 0, tempbuffer.Length);
- buffer = tempbuffer.Take(totalBytesRead).ToArray();
- }
- }
- }
- catch (Exception ex)
- {
- }
- finally
- {
- if (aesAlg != null)
- aesAlg.Clear();
- }
- return buffer;
- }
客户端加密解密文本文件实战:
- /// <summary>
- /// 加密解密
- /// </summary>
- private static void _EncryptAndDecrypt()
- {
- ASCIIEncoding asciiEnc = new ASCIIEncoding();
- byte[] initVectorBytes = asciiEnc.GetBytes("@1B2c3D4e5F6g7H8");
- //Randomly generate or Book key - key K2 - Key to encrypt xml content
- string keyK2 = Generator.RandomString(10);
- //Generate the 128 bit string using MD5 for key K2
- MD5 hashProvider = MD5.Create();
- byte[] md5EncryptedKeyK2 = hashProvider.ComputeHash(asciiEnc.GetBytes(keyK2));
- string filename = "NewTextDocument.txt";
- string filepath = Environment.CurrentDirectory + "" + filename;
- byte[] Content = Encryption.encryptStringToBytes_AES(File.ReadAllBytes(filepath), md5EncryptedKeyK2, initVectorBytes);
- string encryptfilepath = Environment.CurrentDirectory + "encrypt" + filename;
- File.WriteAllBytes(encryptfilepath, Content);
- byte[] decryptContent = Encryption.decryptBytes(File.ReadAllBytes(encryptfilepath), md5EncryptedKeyK2, initVectorBytes);
- string decryptfilepath = Environment.CurrentDirectory + "decrypt" + filename;
- File.WriteAllBytes(decryptfilepath, decryptContent);
- }
压缩解压:
- string filename = "NewTextDocument.txt";
- string filepath = Environment.CurrentDirectory + "" + filename;
- string zipfilepath = Environment.CurrentDirectory + "NewTextDocument.zip";
- using (ZipFile contentZip = new ZipFile())
- {
- //压缩
- contentZip.AlternateEncoding = Encoding.GetEncoding("iso-8859-1");
- contentZip.AlternateEncodingUsage = ZipOption.Always;
- ZipEntry contentFile = contentZip.AddEntry(filename, File.ReadAllBytes(filepath));
- contentZip.Save(zipfilepath);
- //解压
- contentZip.ExtractAll(Environment.CurrentDirectory);
- }
压缩加密解密解压:
- string filename = "NewTextDocument.zip";
- string filepath = Environment.CurrentDirectory + "" + filename;
- string zipfilepath = Environment.CurrentDirectory + "" + filename;
- ZipFile contentZip = new ZipFile();
- contentZip.AlternateEncoding = Encoding.GetEncoding("iso-8859-1");
- contentZip.AlternateEncodingUsage = ZipOption.Always;
- var bytecontent = File.ReadAllBytes(Environment.CurrentDirectory + "NewTextDocument.txt");
- ZipEntry contentFile = contentZip.AddEntry("NewTextDocument.txt", bytecontent);
- contentZip.Save(zipfilepath);
- ASCIIEncoding asciiEnc = new ASCIIEncoding();
- byte[] initVectorBytes = asciiEnc.GetBytes("@1B2c3D4e5F6g7H8");
- //Randomly generate or Book key - key K2 - Key to encrypt xml content
- string keyK2 = Generator.RandomString(10);
- //Generate the 128 bit string using MD5 for key K2
- MD5 hashProvider = MD5.Create();
- byte[] md5EncryptedKeyK2 = hashProvider.ComputeHash(asciiEnc.GetBytes(keyK2));
- byte[] Content = Encryption.encryptStringToBytes_AES(File.ReadAllBytes(filepath), md5EncryptedKeyK2, initVectorBytes);
- string encryptfilepath = Environment.CurrentDirectory + "encrypt" + filename;
- File.WriteAllBytes(encryptfilepath, Content);
- byte[] decryptContent = Encryption.decryptBytes(File.ReadAllBytes(encryptfilepath), md5EncryptedKeyK2, initVectorBytes);
- string decryptfilepath = Environment.CurrentDirectory + "decrypt" + filename;
- File.WriteAllBytes(decryptfilepath, decryptContent);
- contentZip.ExtractAll(Environment.CurrentDirectory + "unzipdecrypt");
- string key = Convert.ToBase64String(md5EncryptedKeyK2);
- string iv = Convert.ToBase64String(initVectorBytes);
- Console.WriteLine(key);
- Console.WriteLine(iv);
- byte[] decryptContent1 = Encryption.decryptBytes(File.ReadAllBytes(encryptfilepath), Convert.FromBase64String(key), Convert.FromBase64String(iv));
- string decryptfilepath1 = Environment.CurrentDirectory + "decrypt1" + filename;
- contentZip.ExtractAll(Environment.CurrentDirectory + "unzipdecrypt1");
- File.WriteAllBytes(decryptfilepath1, decryptContent1);
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索算法
, 解密
, 加密
, c#和ae问题
, byte
, aes对称加密解密
, 密钥
, 安全性
, aes解密
, 对称
, AES加解密
, AES对称加密
AES对称解密
c aes加密解密、java aes加密解密算法、在线aes加密解密工具、android aes加密解密、aes在线加密解密,以便于您获取更多的相关知识。