Tag: encryption

C#中的大数据RSA加密

这是我的第一篇文章,所以希望我没有错过任何重要的内容。 我在C#中做一个项目,我需要使用公钥/私钥加密来加密消息,然后通过SSL连接发送它。 根据文档,我选择使用RSACryptoService ,这是用于加密数据的唯一非对称加密方案。 问题是我遇到了很多问题。 (我想做对称加密,但这不是我老师要我做的事情,根据他的说法,确定块大小应该很容易,然后它应该为你完成所有的工作。)好吧,到目前为止没有运气,我尝试了一些不同的方法,但现在我又回到了基础并再次尝试,这是我目前的代码: public string[] GenerateKeysToStrings(string uniqueIdentifier) { string[] keys; using (var rsa = new RSACryptoServiceProvider(4096)) { try { string privateKey = rsa.ToXmlString(true); string publicKey = rsa.ToXmlString(false); this.pki.StoreKey(publicKey, uniqueIdentifier); keys = new string[2]; keys[0] = privateKey; keys[1] = publicKey; } finally { //// Clear the RSA key container, deleting generated keys. rsa.PersistKeyInCsp […]

阅读C#和Bouncy Castle的RSA PrivateKey

我已成功使用OpenSSL格式写入公钥和私钥文件。 文件: —–BEGIN PUBLIC KEY—– MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCpHCHYgawzNlxVebSKXL7vfc/i hP+dQgMxlaPEi7/vpQtV2szHjIP34MnUKelXFuIETJjOgjWAjTTJoj38MQUWc3u7 SRXaGVggqQEKH+cRi5+UcEObIfpi+cIyAm9MJqKabfJK2e5X/OS7FgAwPjgtDbZO ZxamOrWWL8KGB+lH+QIDAQAB —–END PUBLIC KEY—– —–BEGIN RSA PRIVATE KEY—– MIICXAIBAAKBgQCpHCHYgawzNlxVebSKXL7vfc/ihP+dQgMxlaPEi7/vpQtV2szH jIP34MnUKelXFuIETJjOgjWAjTTJoj38MQUWc3u7SRXaGVggqQEKH+cRi5+UcEOb Ifpi+cIyAm9MJqKabfJK2e5X/OS7FgAwPjgtDbZOZxamOrWWL8KGB+lH+QIDAQAB AoGBAIXtL6jFWVjdjlZrIl4JgXUtkDt21PD33IuiVKZNft4NOWLu+wp17/WZYn3S C2fbSXfaKZIycKi0K8Ab6zcUo0+QZKMoaG5GivnqqTPVAuZchkuMUSVgjGvKAC/D 12/b+w+Shs9pvqED1CxfvtePXNwL6ZNuaREFC5hF/YpMVyg5AkEA3BUCZYJ+Ec96 2cwsdY6HocW8Kn+RIqMjkNtyLA19cQV5mpIP7kAiW6drBDlraVANi+5AgK2zQ+ZT hYzs/JfRKwJBAMS1g5/B7XXnfC6VTRs8AMveZudi5wS/aGpaApybsfx1NTLLsm3l GmGTkbCr+EPzvJ5zRSIAHAA6N6NdORwzEWsCQHTli+JTD5dyNvScaDkAvbYFi06f d32IXYnBpcEUYT65A8BAOMn5ssYwBL23qf/ED431vLkcig1Ut6RGGFKKaQUCQEfa UdkSWm39/5N4f/DZyySs+YO90csfK8HlXRzdlnc0TRlf5K5VyHwqDkatmoMfzh9G 1dLknVXL7jTjQZA2az8CQG0jRSQ599zllylMPPVibW98701Mdhb1u20p1fAOkIrz +BNEdOPqPVIyqIP830nnFsJJgTG2eKB59ym+ypffRmA= —–END RSA PRIVATE KEY—– 公钥当然只包含公钥部分。 使用公钥加密我的消息后。 我想读取私钥文件并解密它,但它不起作用。 我正在尝试读取私钥,因为无法将对象强制转换为不对称密钥。 这是我的代码: public static AsymmetricKeyParameter ReadAsymmetricKeyParameter(string pemFilename) { var fileStream = System.IO.File.OpenText(pemFilename); var pemReader = new Org.BouncyCastle.OpenSsl.PemReader(fileStream); var KeyParameter […]

指定的初始化向量(IV)与此算法的块大小不匹配

我正在研究基本加密方法。 我正在使用RijndaelManaged。 我很久以前从某个地方得到了这段代码,但不记得在哪里。 之前我的代码工作正常,但是有些东西发生了变化,我无法理解它。 当我运行我的代码时,我收到以下错误; 指定的初始化向量(IV)与此算法的块大小不匹配。 这是我的代码: string textToEncrypt = “TEST STRING”; int keySize = 256; string hashAlgorithm = “SHA1”; string passPhrase = “AH!PSB0%FGHR$”; string saltValue = “LRT%YUR#VBNL@1”; string initVector = “HR$2pIjHR$2pIj”; byte[] initVectorBytes = Encoding.ASCII.GetBytes(initVector); byte[] saltValueBytes = Encoding.ASCII.GetBytes(saltValue); byte[] plainTextBytes = Encoding.UTF8.GetBytes(textToEncrypt); var password = new PasswordDeriveBytes(passPhrase, saltValueBytes, hashAlgorithm, 2); byte[] keyBytes = […]

对称加密算法之间的区别

C#看起来有4种不同的对称加密算法:RijndaelManaged,DESCryptoServiceProvider,RC2CryptoServiceProvider和TripleDESCryptoServiceProvider。 我正在寻找他们之间的更多信息。 主要是它们之间的区别是什么。 MSDN没有太多帮助,或者我只是累了。 ;)我确信每个人之间都有利弊,就像有多种做事方式的事情一样。 谢谢你的任何启示。 托尼

使用C#和SymmetricAlgorithm进行真正简单的加密

我正在寻找一种非常简单的crypt / decrypt方法。 我将始终使用相同的静态密钥。 我知道这种方法的风险。 目前我正在使用以下代码,但在加密和删除相同的字符串后,它不会生成相同的结果(字符串中间有一些垃圾)。 public static string Crypt(this string text) { string result = null; if (!String.IsNullOrEmpty(text)) { byte[] plaintextBytes = Encoding.Unicode.GetBytes(text); SymmetricAlgorithm symmetricAlgorithm = DES.Create(); symmetricAlgorithm.Key = new byte[8] {1, 2, 3, 4, 5, 6, 7, 8}; using (MemoryStream memoryStream = new MemoryStream()) { using (CryptoStream cryptoStream = new CryptoStream(memoryStream, symmetricAlgorithm.CreateEncryptor(), CryptoStreamMode.Write)) […]

如何在C#中使用公钥和私钥加密技术

我想使用公钥/私钥技术加密数据。 我的意思是,用接收器的公钥加密,接收器可以用自己的私钥解密。 我怎样才能做到这一点? 您有任何建议或示例代码吗?

如何在C#中解析(转换为RSAParameters)X.509私钥?

我正在使用加密通道来加密两个设备之间的通信。 所以我正在创建一个辅助类来进行加密和解密。 我已经google了很多,发现了一段可以将RSA公钥解析为RSACryptoServiceProvider的代码。 这是代码: public static RSACryptoServiceProvider DecodeX509PublicKey(byte[] x509key) { byte[] SeqOID = { 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00 }; byte[] seq = new byte[15]; MemoryStream mem = new MemoryStream(x509key); BinaryReader binr = new BinaryReader(mem); byte bt = 0; ushort twobytes = 0; try { […]

UWP:AES加密和解密

我有一个简单的类来为Windows Phone 8做一些基本的本地加密。我想在Windows Store的新UWP Windows 10应用程序中再次使用该类。 不幸的是我不能再使用AesManaged类了。 我试图使用Windows.Security.Cryptography.Core ,但我完全卡住了。 这是我用于Windows Phone 8的原始类。我必须在互联网上的某个地方找到它。 using System.Security.Cryptography; namespace TestGame { public class AesEnDecryption { private string AES_Key = “MYLiSQ864FhDevJOeMs9EVp5RmfC7OuH”; private string AES_IV = “FoL5Tyd9sZclVn5A”; public string AES_encrypt(string Input) { var aes = new AesManaged(); aes.KeySize = 128; aes.BlockSize = 128; aes.Key = Convert.FromBase64String(AES_Key); aes.IV = Encoding.UTF8.GetBytes(AES_IV); var encrypt […]

将int转换为BCD字节数组

我想使用BCD将int转换为byte [2]数组。 有问题的int将来自表示Year的DateTime,必须转换为两个字节。 是否有任何预制function可以做到这一点,或者你能给我一个简单的方法吗? 例: int year = 2010 输出: byte[2]{0x20, 0x10};

加密库?

我的任务是在C#中为公司项目实现PKI库,并且无法找到它的良好实现。 似乎有多个库,并且许多断开的链接指向已删除的MSDN库。 我见过人们使用Crypt32.dll,人们建立他们自己的库,人们使用P / Invoke访问系统证书存储,人们扩展内置库,示例根本不适用于C#(例如Java示例),和商业图书馆。 我的问题是,最推荐哪种实现/库用于简单的数据加密/解密? 作为我计划用它做的一些背景知识,我只需要使用私钥(.pfx)加密消息,并使用公钥(.cer)解密。 在此级别的项目中不需要消息签名和身份validation,尽管可能在将来。 我看到加密长度的参考让我感到不安。 我们需要能够加密任何长度的消息(理所当然!)。 这是我需要担心的事情,如果有的话,有没有办法解决它? 如果可能的话,我宁愿不在Windows证书管理器中存储公钥/私钥,但是如果它使实现变得更加简单,那就这样吧。 我意识到PKI和加密是一个庞大而复杂的主题,但无论如何我希望有一个相对简单的库……(人们可以希望,对吧?) 谢谢!