Tag: encryption

是否可以在一行中写入ROT13?

我有以下代码,我希望看到它作为oneliner。 但是,由于我对C#很新,我目前还不知道如何做到这一点…… 码: static string ROT13 (string input) { if (string.IsNullOrEmpty(input)) return input; char[] buffer = new char[input.Length]; for (int i = 0; i = 97 && c 122) j -= 26; buffer[i] = (char)j; } else if (c >= 65 && c 90) j -= 26; buffer[i] = (char)j; } else { buffer[i] = […]

逐行加密/解密文件?

我是加密的新手,我正在努力让逐行加密器工作; 我需要能够在应用程序运行期间将加密的行附加到文件中,而不是仅仅进行一次大规模加密 – 所有内容和保存。 虽然我有一个时间的野兽。 这是我的加密器,经过多次尝试失败后无耻地被盗: class Encryption { private static readonly byte[] SALT = new byte[] { 0x26, 0xdc, 0xff, 0x00, 0xad, 0xed, 0x7a, 0xee, 0xc5, 0xfe, 0x07, 0xaf, 0x4d, 0x08, 0x22, 0x3c }; public static byte[] Encrypt(byte[] plain, string password) { MemoryStream memoryStream; CryptoStream cryptoStream; Rijndael rijndael = Rijndael.Create(); Rfc2898DeriveBytes pdb = new […]

Bouncy Castle C#PGP解密示例

昨天我一直在寻找,我似乎无法在c#中找到使用Bouncy Castle的PGP解密的工作示例

使用Rijndael加密/解密文件

我需要传输xml文件,并且需要加密它们。 我发现一些例子认为我很接近,但是当我解密文件时,我最终得到了尾随垃圾字符。 有一些关于这个的post,但我没有看到任何将完全有帮助。 这是加密和解密代码。 private void EncryptFile(string inputFile, string outputFile, string key) { try { byte[] keyBytes; keyBytes = Encoding.Unicode.GetBytes(key); Rfc2898DeriveBytes derivedKey = new Rfc2898DeriveBytes(key, keyBytes); RijndaelManaged rijndaelCSP = new RijndaelManaged(); rijndaelCSP.Key = derivedKey.GetBytes(rijndaelCSP.KeySize / 8); rijndaelCSP.IV = derivedKey.GetBytes(rijndaelCSP.BlockSize / 8); ICryptoTransform encryptor = rijndaelCSP.CreateEncryptor(); FileStream inputFileStream = new FileStream(inputFile, FileMode.Open, FileAccess.Read); byte[] inputFileData = […]

三重DES加密

请注意,我在这里遇到的问题是密钥大小 。 首先,基于下面代码中包含的注释,我认为我的密钥需要是24字节(192位)。 这不起作用所以我给了16,32和8字节键一个镜头 – 似乎没有任何工作。 “不工作”是指在我的文本加密和解密后,它与原始文本的值不同。 例: 原文: ‘Example test this should work ‘ 加密文本: ¹pÕô6 解密文本: ‘Example ‘ 以下是我正在使用的两个function(加密/解密function)。 我还将包括我如何调用每个函数。 // 168-bit (three-key) 3DES (Triple-DES) encrypt a single 8-byte block (ECB mode) // plain-text should be 8-bytes, key should be 24 bytes. public byte[] TripleDesEncryptOneBlock(byte[] plainText, byte[] key) { // Create a new […]

Bouncy Castle PGP解密问题

我有一个使用Bouncy Castle进行PGP解密的应用程序,在过去的8个月左右没有任何问题,过去2天突然出现了GetDataStream方法引发exception的问题: exception消息:“错误设置非对称密码”。 内部exception消息:“不是RSA密钥”。 private static PgpObjectFactory getClearDataStream(PgpPrivateKey privateKey, PgpPublicKeyEncryptedData publicKeyED) { // Exception throws here. Stream clearStream = publicKeyED.GetDataStream(privateKey); PgpObjectFactory clearFactory = new PgpObjectFactory(clearStream); return clearFactory; } 密钥尚未过期,没有到期日期: 我没有对应用程序进行任何更改,我没有触及按键,所以我不太明白为什么一个问题突然出现了。 有任何想法吗? 我还可以使用我在应用程序中加载的相同密钥使用Kleopatra手动解密文件。 更新1 – 我下载了OpenPGP Library for .NET的免费试用版,它也希望使用BouncyCastle,我也没有问题使用相同的密钥解密文件。 出于某种原因,我使用已经工作了几个月的BouncyCastle实现的解密由于某种原因而停止工作,我还无法识别。 更新2 – 我上周提取的文件有效,我还下载了BouncyCastle的源代码,以便我可以单步调试以查看exception抛出的位置以及变量在工作和一个不起作用的文件。 在PgpPublicKeyEncryptedData类的GetDataStream方法的开头抛出exception: byte[] plain = fetchSymmetricKeyData(privKey); 当我进入这个方法时,对于我可以解密而没有任何问题的文件,我注意到keyData.Algorithm变量设置为“ElGamalEncrypt”,而对于exception抛出的文件,文件keyData.Algortithm设置为“RsaGeneral”。 为什么这些不同? 公司发送文件是否改变了加密方法? BouncyCastle是否未正确支持此加密方法? private byte[] fetchSymmetricKeyData(PgpPrivateKey privKey) […]

使用Bouncy Castle AES / CBC / PKCS7加密字符串

我一直在寻找一些关于如何使用Bouncy Castle Framework加密标题中加密的简单字符串的示例代码。 此代码将在Windows Universal项目上运行。 我之前尝试使用内置API加密的尝试无法在服务器上解密。 我试过这个:这给了我一个字符串: 4pQUfomwVVsl68oQqWoWYNRmRM + CP + vNFXBNdkN6dZPQ34VZ35vsKn9Q7QGTDVOj + w5mqVYHnGuAOFOgdgl8kA == s = String.Format(“{0}_{1}”, s, DateTime.Now.ToString(“ddMMyyyyHmmss”)); SymmetricKeyAlgorithmProvider algorithm = SymmetricKeyAlgorithmProvider.OpenAlgorithm(SymmetricAlgorithmNames.AesCbcPkcs7); IBuffer keymaterial = CryptographicBuffer.ConvertStringToBinary(“[Key]”, BinaryStringEncoding.Utf8); CryptographicKey KEY = algorithm.CreateSymmetricKey(keymaterial); IBuffer IV = CryptographicBuffer.ConvertStringToBinary(“[IV]”, BinaryStringEncoding.Utf8); IBuffer data = CryptographicBuffer.ConvertStringToBinary(s, BinaryStringEncoding.Utf8); IBuffer output = CryptographicEngine.Encrypt(KEY, data, IV); return CryptographicBuffer.EncodeToBase64String(output); 服务器使用加密/解密 public static string […]

将C#RSACryptoServiceProvider代码转换为Java

我需要为项目相关的目的加密String,并由供应商给出相同的代码。 public static string EncryptString(string StringToEncrypt) { RSACryptoServiceProvider provider = new RSACryptoServiceProvider(); string xmlString = “qqoWhMwGrrEBRr92VYud3j+iIEm7652Fs20HvNckH3tRDJIL465TLy7Cil8VYxJre69zwny1aUAPYItybg5pSbSORmP+hMp6Jhs+mg3qRPvHfNIl23zynb4kAi4Mx/yEkGwsa6L946lZKY8f9UjDkLJY7yXevMML1LT+h/a0a38=AQAB20PwC7nSsfrfA9pzwSOnRYdbhOYivFSuERxvXHvNjCll5XdmFYYp1d2evXcXbyj3E1k8azce1avQ9njH85NMNQ==x0G0lWcQ13NDhEcWbA7R2W5LPUmRqcjQXo8qFIaHk7LZ7ps9fAk/kOxaCR6hvfczgut1xSpXv6rnQ5IGvxaHYw==lyybF2qSEvYVxvFZt8MeM/jkJ5gIQPLdZJzHRutwx39PastMjfCHbZW0OYsflBuZZjSzTHSfhNBGbXjO22gmNQ==NJVLYa4MTL83Tx4vdZ7HlFi99FOI5ESBcKLZWQdTmg+14XkIVcZfBxDIheWWi3pEFsWqk7ij5Ynlc/iCXUVFvw==X5Aw9YSQLSfTSXEykTt7QZe6SUA0QwGph3mUae6A2SaSTmIZTcmSUsJwhL7PLNZKbMKSWXfWoemj0EVUpZbZ3Q==jQL4lEUYCGNMUK6GEezIRgiB5vfFg8ql3DjsOcXxnOmBcEeD913kcYnLSBWEUFW55Xp0xW/RXOOHURgnNnRF3Ty5UR73jPN3/8QgMSxV8OXFo3+QvX+KHNHzf2cjKQDVObJTKxHsHKy+L2qjfULA4e+1cSDNn5zIln2ov51Ou3E=”; provider.FromXmlString(xmlString); return Convert.ToBase64String(provider.Encrypt(Encoding.ASCII.GetBytes(StringToEncrypt), false)); } 但是我需要修改或翻译成JAVA。 为了同样的目的,我写了下面的方法。 public static String EncryptString(String strToBeEncrypted) throws NoSuchAlgorithmException, InvalidKeySpecException, NoSuchPaddingException, InvalidKeyException, UnsupportedEncodingException, IllegalBlockSizeException, BadPaddingException { String modulusString = “qqoWhMwGrrEBRr92VYud3j+iIEm7652Fs20HvNckH3tRDJIL465TLy7Cil8VYxJre69zwny1aUAPYItybg5pSbSORmP+hMp6Jhs+mg3qRPvHfNIl23zynb4kAi4Mx/yEkGwsa6L946lZKY8f9UjDkLJY7yXevMML1LT+h/a0a38=”; String publicExponentString = “AQAB”; byte[] modulusBytes = Base64.decodeBase64(modulusString); byte[] exponentBytes = Base64.decodeBase64(publicExponentString); BigInteger modulus […]

如何使用带有RSA私钥的RS256在C#中创建加密的JWT

我正在使用jose-jwt库,并希望使用RS256算法在C#中创建加密的JWT进行加密。 我没有密码学的经验,所以请原谅我的无知。 我在文档中看到以下示例: var payload = new Dictionary() { { “sub”, “mr.x@contoso.com” }, { “exp”, 1300819380 } }; var privateKey=new X509Certificate2(“my-key.p12”, “password”, X509KeyStorageFlags.Exportable | X509KeyStorageFlags.MachineKeySet).PrivateKey as RSACryptoServiceProvider; string token=Jose.JWT.Encode(payload, privateKey, JwsAlgorithm.RS256); 它显示了使用p12文件,但是如何使用下面表格的RSA密钥文件? 我正在查看X509Certificate2的文档,但我看不到RSA私钥的选项。 它似乎只接受PKCS7 ,我理解为公钥。 —–BEGIN RSA PRIVATE KEY—– MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5 1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh 3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2 pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ 37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0= —–END RSA PRIVATE KEY—– 最后, […]

对大文件使用Rijndael加密

我需要安全地加密/解密n长度的文件,理想情况下使用Rijndael,但绝对是256位加密。 我以前玩过加密,并且非常高兴地加密/解密字符串和字节数组。 但是,因为我不知道文件的大小(并且所讨论的文件可能非常大(~2.5gb)非常可行,我不能只将它们加载到字节数组中并对它们进行加密/解密像我以前一样受限制。 因此,经过对Google的一些阅读后,我知道答案是以块的forms加密和解密文件,因此我生成了以下代码: private static void Enc(string decryptedFileName, string encryptedFileName) { FileStream fsOutput = File.OpenWrite(encryptedFileName); FileStream fsInput = File.OpenRead(decryptedFileName); byte[] IVBytes = Encoding.ASCII.GetBytes(“1234567890123456”); fsOutput.Write(BitConverter.GetBytes(fsInput.Length), 0, 8); fsOutput.Write(IVBytes, 0, 16); RijndaelManaged symmetricKey = new RijndaelManaged() { Mode = CipherMode.CBC}; ICryptoTransform encryptor = symmetricKey.CreateEncryptor(passwordDB.GetBytes(256 / 8), IVBytes); CryptoStream cryptoStream = new CryptoStream(fsOutput, encryptor, CryptoStreamMode.Write); for (long […]