Tag: aes

使用哪种C#AES加密选项可以在公共网站上解密?

我想使用类似于下面的代码加密字符串,并能够使用公共网站(例如其中一个)对其进行解密(但也可以在其他网站上开放): http://aesencryption.net/ http://www.nakov.com/blog/2011/12/26/online-aes-encryptor-decryptor-javascript/ 这是我目前正在玩这些网站并试用这些网站的代码,我无法找到使这项工作成功的选项。 有任何想法吗? 公共类AES { private readonly int _saltSize = 32; public string Encrypt(string plainText,string key) { if(string.IsNullOrEmpty(plainText)) { 抛出新的ArgumentNullException(“plainText”); } if(string.IsNullOrEmpty(key)) { 抛出新的ArgumentNullException(“key”); } 使用(var keyDerivationFunction = new Rfc2898DeriveBytes(key,_saltSize)) { byte [] saltBytes = keyDerivationFunction.Salt; byte [] keyBytes = keyDerivationFunction.GetBytes(32); byte [] ivBytes = keyDerivationFunction.GetBytes(16); 使用(var aesManaged = new AesManaged()) { aesManaged.KeySize […]

AES加密器无法正常工作

我试图让这个AES示例代码正常工作。 但是我没有得到任何返回我的cipherText变量的内容。 我没有得到错误,只是没有回复。 我在这做错了什么? public byte[] key { get; set; } public byte[] IV { get; set; } public byte[] ciphertext { get; set; } public string plainText { get; set; } public byte[] Encrypt(string InputPlaintext) { InputPlaintext = “attack at dawn”; using (AesCryptoServiceProvider AESEncryptor = new AesCryptoServiceProvider()) { ////using the AesCryptoServiceProvider to generate the […]

如何使用AES获取相同纯文本的不同密文

我目前在C#中使用AesManaged类来加密纯文本。 它工作正常。 但是,每次加密同一条数据时,它都会生成相同的密文。 反正我是否可以调整此行为并为同一条数据生成不同的密文? 我使用AES_256算法和证书在SQL服务器中实现了加密。 该过程与此处的post非常相似: http : //www.codeproject.com/Articles/662187/FIPS-Encryption-Algorithms-and-Implementation-of-A 。 在此过程中,每次加密纯文本时,都会生成不同的密文。 我想要与C#代码相同的效果。 如何实现? 编辑:以下是我实施Yolanda Ruiz建议的方法: 加密 public static string Encrypt(string plainText) { //Check for valid arguments. if (String.IsNullOrEmpty(plainText)) throw new ArgumentNullException(“plainText”); List encryptedList; //Create Aes object using (AesManaged aes = new AesManaged()) { aes.Key = Key; aes.GenerateIV(); encryptedList = aes.IV.ToList(); aes.BlockSize = BlockSize; /*Here goes […]

使用C#和CryptoJS进行不同的加密结果

我在服务器应用程序中使用AES加密一些数据,这是用C#编写的。 我使用预定义的密钥(32字节)和IV(16字节),例如…… Key: 81fe1681..6a451c1c IV: e83c..ae76 这是我用来加密数据的C#代码: async Task Encrypt(string privateKey, string pin, byte[] data) { using (var sha = SHA256.Create()) { byte[] keyHash = sha.ComputeHash(Encoding.UTF8.GetBytes($”{privateKey}”)); byte[] pinHash = sha.ComputeHash(Encoding.UTF8.GetBytes($”{pin}”)); using (Aes aes = Aes.Create()) { byte[] key = keyHash.Slice(0, aes.Key.Length); byte[] iv = pinHash.Slice(0, aes.IV.Length); using (ICryptoTransform transform = aes.CreateEncryptor(key, iv)) using (var stream […]

“填充无效,无法删除” – 这段代码有什么问题?

每次运行和加密时,输出都是可变的,当我尝试解密时,我得到“填充无效且无法删除”。 现在和这一天打了一两天,我不知所措。 private static string strIV = “abcdefghijklmnmo”; //The initialization vector. private static string strKey = “abcdefghijklmnmoabcdefghijklmnmo”; //The key used to encrypt the text. public static string Decrypt(string TextToDecrypt) { return Decryptor(TextToDecrypt); } private static string Encryptor(string TextToEncrypt) { //Turn the plaintext into a byte array. byte[] PlainTextBytes = System.Text.ASCIIEncoding.ASCII.GetBytes(TextToEncrypt); //Setup the AES providor for […]

从cryptostream读取到流的末尾

我在使用下面的代码时遇到了一些麻烦。 我有一个临时位置的文件,需要加密,此function加密该数据,然后存储在“pathToSave”位置。 在检查时似乎没有正确处理整个文件 – 我的输出中缺少一些位,我怀疑它与while循环没有贯穿整个流有关。 顺便说一句,如果我尝试在while循环后调用CryptStrm.Close(),我会收到exception。 这意味着如果我尝试解密文件,我会得到一个已经在使用的文件错误! 尝试了所有平常和我在这里看到类似的问题,任何帮助都会很棒。 谢谢 public void EncryptFile(String tempPath, String pathToSave) { try { FileStream InputFile = new FileStream(tempPath, FileMode.Open, FileAccess.Read); FileStream OutputFile = new FileStream(pathToSave, FileMode.Create, FileAccess.Write); RijndaelManaged RijCrypto = new RijndaelManaged(); //Key byte[] Key = new byte[32] { … }; //Initialisation Vector byte[] IV = new byte[32] { … […]

AES使用OpenSSL进行加密,使用C#.Net进行解密

我需要知道如何在AES-OpenSSL中加密消息并在.NET中解密(C#或VB)或者知道AES-OPENSSL和AES-.NET之间的区别 谢谢! VB.NET中的CODE : Public Function AES_Decrypt(ByVal prm_key As String, ByVal prm_iv As String, ByVal prm_text_to_decrypt As String) Dim sEncryptedString As String = prm_text_to_decrypt Dim myRijndael As New RijndaelManaged myRijndael.Padding = PaddingMode.Zeros myRijndael.Mode = CipherMode.CBC myRijndael.KeySize = 256 myRijndael.BlockSize = 256 Dim key() As Byte Dim IV() As Byte key = System.Text.Encoding.ASCII.GetBytes(prm_key) IV = System.Text.Encoding.ASCII.GetBytes(prm_iv) […]

使用OpenSSL进行AES-256 / CBC加密并使用C#进行解密

我是密码学的新手。 我的要求是使用openssl解密/加密加密/解密的文本。 我们使用的算法是Openssl中的aes-256-cbc。 所以,我试图在我的应用程序中实现相同的function。 到目前为止,经过大量的谷歌搜索,我所能做的就是…… private static string Encryptor(string TextToEncrypt) { //Turn the plaintext into a byte array. byte[] PlainTextBytes = System.Text.ASCIIEncoding.ASCII.GetBytes(TextToEncrypt); //Setup the AES providor for our purposes. AesCryptoServiceProvider aesProvider = new AesCryptoServiceProvider(); aesProvider.BlockSize = 128; aesProvider.KeySize = 256; //My key and iv that i have used in openssl aesProvider.Key = System.Text.Encoding.ASCII.GetBytes(strKey); aesProvider.IV = […]

我如何使用ConvertTo-SecureString

假设我需要在Powershell中执行此操作: $SecurePass = Get-Content $CredPath | ConvertTo-SecureString -Key (1..16) [String]$CleartextPass = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($CredPass)); $ CredPath的内容是一个包含ConvertFrom-SecureString -Key(1..16)输出的文件。 如何在C#/ .NET中完成ConvertTo-SecureString -key (1..16)部分? 我知道如何创建SecureString ,但我不确定应该如何处理加密。 我是否使用AES加密每个字符,或者解密字符串然后为每个字符创建一个安全字符串? 我对密码学几乎一无所知,但从我收集的内容中我可能只想用C#调用Powershell命令。 作为参考,我在这里发现了一篇关于AES加密/解密的类似post: 在C#中使用AES加密 UPDATE 我已经回顾了Keith发布的链接 ,但我还面临其他未知数。 DecryptStringFromBytes_Aes有三个参数: static string DecryptStringFromBytes_Aes(byte[] cipherText, byte[] Key, byte[] IV) 第一个参数是字节数组表示加密文本。 这里的问题是,如何在字节数组中表示字符串? 它应该用或不用编码来表示? byte[] ciphertext = Encoding.ASCII.GetBytes(encrypted_text); byte[] ciphertext = Encoding.UTF8.GetBytes(encrypted_text); byte[] ciphertext = Encoding.Unicode.GetBytes(encrypted_text); byte[] ciphertext = […]

使用AES和rsaEncryption(PKCS#1 v1.5填充而不是v2(OAEP)填充)的EnvelopedCMS可能吗?

我一直在使用.NET进行加密。 到目前为止,我将3DES(Oid 1.2.840.113549.3.7)与rsaEncryption(Oid 1.2.840.113549.1.1.1,RSAES-PKCS1-v1_5)结合使用。 虽然第一个现在已被AES取代(Oid 2.16.840.1.101.3.4.1.42),但我仍然必须使用rsaEncryption / RSAES-PKCS1-v1_5 ,而不是RSAES-OAEP 。 如果我只是将另一个参数传递给我正在调用的EnvelopedCMS构造函数,我可以从3DES切换到AES: ContentInfo plainContent = new ContentInfo(new Oid(“1.2.840.113549.1.7.1”), data); EnvelopedCms encryptedMessage = new EnvelopedCms(plainContent); // using 3DES // EnvelopedCms encryptedMessage = new EnvelopedCms(plainContent, new AlgorithmIdentifier(new Oid(“2.16.840.1.101.3.4.1.42”))); // for AES (id-aes256-CBC) CmsRecipient recipient = new CmsRecipient(cert); encryptedMessage.Encrypt(recipient); byte[] encryptedBytes = encryptedMessage.Encode(); 到目前为止这很好。 不幸的是,有些收件人无法解密我的邮件,尽管他们能够解密AES。 查看ASN.1结构告诉我,不仅3DES改为AES,而且rsaEncryption(1.2.840.113549.1.1.1)被RSAES-OAEP (1.2.840.113549.1.1.7)取代。 我可以以某种方式强迫仍然使用EnvelopedCMS的RSAES-PKCS1-v1_5吗? 或者您是否在切换3DES-> […]