C# AES Rijndael-检测无效的密码
我正在使用rijndael加密程序中的一些敏感数据. 当用户输入不正确的密码时,大多数情况下,CryptographicException都会带有"填充无效,无法删除". 但是,由于概率很小,CryptStream不会给出错误的密码异常,而是将一个错误解密的流归还.换句话说,它解密了垃圾. 任何想法如何检测/预防?我能想到的最简单的方法是加密时在消息开始时放置一个"魔术号",并在解密后检查是否仍然存在. 但是,如果有一种简单的方法,我很想听听! 解决方案 HMAC是您需要的.它是为此目的而制造的.它结合了密钥和消息(在这种情况下,将是您的密码),并以某种方式将其放大,以确保内容的真实性和完整性,只要使用的哈希功能是安全的.您可以将HMAC连接到加密数据,以后可以使用它来验证是否正确进行解密. hmac,wikipedia system.security.cryptograly.cryptography.hmac 其他解决方案 校验和恰恰是为
0 2024-04-19
编程技术问答社区
解密C#的RIJNDAEL编码文本
我正在Java实施与第三方应用程序的通信. 作为登录过程的一部分,第三方应用程序正在发送我必须解码并发送回的加密字符串. 我花了近2天的时间谷歌和阅读帖子,但找不到正确的实施方法. 我有一个测试用例,其中加密字符串为" C1W2YO1VYQZU6CZTEEIDRG0U4G5GT4H57H57VALP7TDJCY =",它用密码" GAT"必须返回" 101714994". 我已经指出的文档: 授权字符串已加密以下设置: 输入数据的填充:PKCS*7 密码字节阵列长32个字节.密码字符串转换为UTF-16编码的字节数组,然后将字节数组用零填充到32个字节.较长的密码被截断. 这是如何解密授权字符串的C#示例: /// /// Decrypts a string. /// /// The string to decrypt. ///
0 2024-04-16
编程技术问答社区
坏的PKCS7 Padding错误。无效长度 106
我正在尝试加密并解密以下功能,但是,它会导致错误的填充错误. 如果我将PaddingMode设置为None它返回日志中的一些alpha字符和随机符号. 我可能缺少设置正确结构的内容,如下所示: Cipher Rijndael(AES) 块大小128位(16个字节) 模式CBC(密码块链)键 MD5哈希密码 iv与键 相同 数据编码base64字符 UTF-8编码 任何帮助解决此错误的帮助以及确保满足上述结构的任何帮助将不胜感激!谢谢 错误 CryptographicException: Bad PKCS7 padding. Invalid length 106. Mono.Security.Cryptography.SymmetricTransform.ThrowBadPaddingException (PaddingMode padding, Int32 length, Int32 position) (at /Users/buildus
2 2024-04-16
编程技术问答社区
rijndael加密,只有部分字符串被解密
字符串的一部分被解密,我认为这与我的编码有关. 这是发生的事情: string s = "The brown fox jumped over the green frog"; string k = "urieurut"; string enc = EncryptString(s, k); string dec = DecryptString(enc, k); 结果是:棕色狐狸juϼ혽ㆉ public static string EncryptString(string stringToEncrypt, string encryptionKey) { string encrypted = String.Empty; UnicodeEncoding UE = new UnicodeEncoding(); byte[] key = UE.GetBytes(encryptionKey);
0 2024-04-16
编程技术问答社区
如何在没有IV的情况下使用AES128进行加密和解密?
我目前需要一种使用AES-128对称加密加密字符串和对字节数组进行加密的方法.我找不到方法,但也许我错过了一些东西. 解决方案 导入名称空间 using System; using System.IO; using System.Text; using System.Security.Cryptography; static void Main(string[] args) { string value = "@arifansari300"; string encryptedValue= EncryptDecrypt.Encrypt(value); string decryptedValue = EncryptDecrypt.Decrypt(encryptedValue); } public static string Encrypt(st
4 2024-04-13
编程技术问答社区
解密异常-要解密的数据长度无效
我在C#应用程序中工作.我们有将数据存储在文件上的通用方法.这些方法加密数据并将它们存储在文件系统上.当我们需要数据时,ReadData方法解密数据并返回我的纯文本. 如果文本的大小为小,则此代码在正常情况下正常工作.但是对于下面给出的示例文本,解密代码抛出了异常 - 解密的数据长度无效. 例外发生在线路 // close the CryptoStream x_cryptostream.Close(); 我尝试了不同的方式,但没有运气.有些PL可以帮助. 为什么我要加密已经加密的数据 - 我只是尝试使用巨大应用程序的通用方法存储在文件中.常见方法storedata(key,data) nad readdata(key)做我无法避免的加密/解密. public static byte[] Decrypt(byte[] ciphertext, string Key, string IV) { by
0 2024-04-13
编程技术问答社区
在PHP中重写Rijndael 256 C#加密代码
我有一个用C#编写的加密/解密算法 - 我需要能够在PHP中产生相同的加密,因此我可以通过HTTP发送加密文本以在C#侧解密. 这是加密的C#代码. this.m_plainText = string.Empty; this.m_passPhrase = "passpharse"; this.m_saltValue = "saltvalue"; this.m_hashAlgorithm = "SHA1"; this.m_passwordIterations = 2; this.m_initVector = "1a2b3c4d5e6f7g8h"; this.m_keySize = 256; public string Encrypt() { string plainText = this.m_plainText; string passPhrase = this.m_passPhrase; string saltValue = this.m_saltValu
0 2024-04-13
编程技术问答社区
指定的初始化向量(IV)与该算法的块大小不匹配
我正在使用基本加密方法.我正在使用rijndaelmaned.我很久以前从某个地方得到了此代码,但不记得在哪里. 我以前有代码工作,但是有些事情发生了变化,我无法完全弄清楚. 运行代码时,我会收到以下错误; 指定的初始化向量(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.AS
0 2024-04-13
编程技术问答社区
C# AES。加密文件导致 "要加密的数据长度无效 "的错误。
我有一个pdf文件. 当我想使用下面发生错误的代码对其进行加密时: string inputFile = @"C:\sample.pdf"; string outputFile = @"C:\sample_enc.pdf"; try { using (RijndaelManaged aes = new RijndaelManaged()) { byte[] key = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }; byte[] iv = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }; aes.Key = key; aes.IV = iv; aes.Mode = CipherMode.CFB; aes.Padding = Padd
6 2024-04-12
编程技术问答社区
如何将这个C# Rijndael加密法转换为PHP?
已经有一些有用的问题: rijndael 256 egniprypt/decrypt/c#和php之间的decrypt/decrypt?/a> rewrite rijndael 256 > rijndael/aes解密c#/li> 但是,我的特殊情况仍然很困难. 我已经尝试了各种方法,但最终得到了错误"The IV parameter must be as long as the blocksize"或与结果不符的文本. 我不够理解加密无法解决我做错了什么. 这是PHP版本: $pass = 'hello'; $salt = 'application-salt'; echo Encrypt('hello', 'application-salt'); function Encrypt($pass, $salt) { $derived = PBKDF1($pass, $salt, 100, 16); $key = bin2hex(s
0 2024-04-11
编程技术问答社区
Rijndael 256在c#和php之间加密/解密?
更新 我已经对C#代码进行了更改,因此它使用了256的块大小.但是现在Hello World看起来像 http://pastebin.com/5sxhmv11 我无法弄清楚我应该在rtrim()中使用什么来在最后骑行. 当您说IV应该是随机的时,您的意思是您不使用一次iV,或者是我编码错误的方式吗? 再次感谢! 嗨, 我试图用C#加密的PHP解密字符串.我似乎无法使用McRypt解密它,可以帮助您做一些帮助.我在PHP中遇到以下错误,所以我猜我没有正确设置IV. 错误:IV参数必须与blocksize 一样长 这两个函数都使用相同的密码,键,iv和设置为CBC模式: c#= umzucnazthh0nmkiumisqg == 的加密文本 钥匙32 long = qwertyuiopasdfghjklzxcvbnmqwerty iv 16 long = 1234567890123456 c# public static
2 2024-04-11
编程技术问答社区
Rijndael 256加密。Java和.NET不匹配
我需要将带有Rijandael加密的PowerShell脚本转换为Java. 这是源PowerShell代码: [Reflection.Assembly]::LoadWithPartialName("System.Security") Add-Type -AssemblyName System.Web $sKy = "bbee9a3e8e44e28edb4539186d182aaa" $sIV = "131a68dc13160766f37dc931d7e518aa" $myRijndael = New-Object System.Security.Cryptography.RijndaelManaged $myRijndael.KeySize = 256 $myRijndael.BlockSize = 256 $myRijndael.Mode = [System.Security.Cryptography.CipherMode]::CBC $myRijndael.Padd
0 2024-04-03
编程技术问答社区
经典ASP和ASP.NET之间的密码加密/解密
我有2个网站:一个用经典ASP编写,另一个用ASP.NET(1.1框架)编写.这两个应用程序都使用登录机制来基于共享数据库表验证用户凭据.到目前为止,密码存储在1向MD5哈希中,这意味着如果丢失了旧密码,则必须为人们提供新的生成密码.我现在想更改此内容并使密码解密. 我发现该rijndael代码与经典ASP一起使用: http://www.frez.co.uk/freecode.htm#rijndaeldael/a http:/> ,但我找不到ASP.NET的相同解决方案.我尝试了一下,但是它为我提供了经典ASP和ASP.NET代码之间的不同加密和解密结果: If Not String.IsNullOrEmpty(TextBox1.Text) And Not String.IsNullOrEmpty(TextBox2.Text) Then Dim password = TextBox1.Text Dim key = Te
2 2024-03-16
编程技术问答社区
SagePay Form-Classic ASP-货币字段在使用rijndael.asp时丢失。
我正在尝试在经典ASP中添加形式的SagePay支付网关.我有一个工作的PHP版本.我已经将其翻译成VBScript,一切似乎都可以正常工作,但是加密. 我使用的所有输入与PHP脚本相同,因此加密串与PHP加密在加密之前完全相同. 我已经下载并使用rijndael.asp&incluse.asp文件在此处找到:使用经典ASP进行Sagepay形式集成 加密地crypt字段 但我继续收到以下错误: Status: MALFORMED Status Detail: 3045 : The Currency field is missing. Cryptstring: VendorTxCode=542534345&ReferrerID=&Amount=200.00&Currency=GBP &Description=Lorem ipsum&SuccessURL=http://www.testserver.co.uk/sagepaytest/success.php &Fa
2 2024-03-16
编程技术问答社区
SagePay表单|经典ASP|使用rijndael.asp时缺少货币字段
我正在尝试在经典ASP中添加形式的SagePay支付网关.我有一个工作的PHP版本.我已经将其翻译成VBScript,一切似乎都可以正常工作,但是加密. 我使用的所有输入与PHP脚本相同,因此加密串与PHP加密在加密之前完全相同. 我已经下载并使用rijndael.asp&incluse.asp文件在此处找到:使用经典ASP进行Sagepay形式集成 加密地crypt字段 但我继续收到以下错误: Status: MALFORMED Status Detail: 3045 : The Currency field is missing. Cryptstring: VendorTxCode=542534345&ReferrerID=&Amount=200.00&Currency=GBP &Description=Lorem ipsum&SuccessURL=http://www.testserver.co.uk/sagepaytest/success.php &Fa
2 2024-03-16
编程技术问答社区
如何在VBScript中使用AES加密?
我希望使用 vbscript 使用特定键和我看着 capicom ;它仅允许使用密码,并且不允许设置特定的键和IV值. 解决方案 一种方法是在不需要外部添加的COM对象或包装器中声明VBScript中的加密类.以下示例使用rijndael托管类进行字符串,加密和解密: '----------------------------------------------------- Dim obj,arr,i,r,str,enc,asc dim bytes,bytesd,s,sc,sd set obj=WScript.CreateObject("System.Security.Cryptography.RijndaelManaged") Set asc = CreateObject("System.Text.UTF8Encoding") s="This is a private message" bytes=asc.GetBytes_4(s) obj.GenerateKey()
6 2024-03-16
编程技术问答社区
Asp.net身份散列是安全的吗?
我已将以下URL中的Rijndael和ASP.NET Hashing实现引用以下网站. rijndael- 如何产生Rijndael Key和IV使用密码? asp.net哈希 - asp.net身份默认密码hasher,它是如何工作的? 在两个实现中, 以下内容用于获取密码的随机字节. rijndael Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(password, SALT); asp.net身份哈希 Rfc2898DeriveBytes bytes = new Rfc2898DeriveBytes(providedPassword, salt, HasingIterationsCount) 在上述代码之后,Rijndael应用返回字节的加密. 但是ASP.NET身份将结果复制,因为它与Salt Byte数组一起返回Hashed键. 在这里我感到困惑. rijndael和asp.net身份哈希
0 2024-03-09
编程技术问答社区
用protection=validation解密.ASPXAUTH Cookie
有一段时间,我一直在尝试解读ASP .aspxauth cookie并使用PHP解密.我的原因很大,我需要这样做,别无选择.到目前为止,在PHP中,我已经成功地读取了此cookie的数据,但是在加密时,我似乎无法这样做.无论如何,它去了... 首先,您需要更改服务器web.config文件(需要将保护设置为验证): 然后在同一域上的PHP脚本中,您可以做以下内容以读取数据,这是一个非常基本的示例,但是证明: $authCookie = $_COOKIE['_ASPXAUTH']; echo 'ASPXAU
4 2024-03-08
编程技术问答社区
在安卓上使用密钥为256位的Rijndael进行加密/解密
我正在开发一个消耗WS的Android应用程序. 要在Android应用程序和WebService之间交换信息,您必须使用256位密钥的算法加密/解密rijndael. 也就是说,所有从WS返回的信息都将被加密,因此我使用算法对它们进行解密. 同样,我发送给WS的所有信息都应加密.因此,我将使用加密算法. 我还没有发现Rijndael准备在Android平台中使用.但是我在c#中有相同的算法. public class KeydKey { public KeydKey() { } #region Metodos de Criptografia #region key public string key(string vstrTextToBeEncrypted, string vstrEncryptionKey) { byte[] bytValue; byte[] bytK
6 2024-02-11
编程技术问答社区
重写PHP Rijndael算法到Java(Android)。
我需要在结果必须相同的Java和PHP中编码一个字符串. 给出以下条件: 算法:rijndael-128 键:5P443M2Q1R9A7F5R3E1Z08642 模式:欧洲央行 初始化向量:n/a(因为我们使用的是欧洲央行,iv被忽略) String to encode: 201412181656005P443m2Q1R9A7f5r3e1z08642 php securekey = $textkey; $this->iv = mcrypt_create_iv(32); }
8 2024-01-30
编程技术问答社区