![](/img/trans.png)
[英]Decode/Decrypt string using jQuery or JavaScript that was originally encoded in C#
[英]Decrypt a string with C# that was originally encrypted in Foxpro
我正在編寫一個.Net MVC程序,該程序必須能夠讀取Foxpro應用程序加密的字符串。 如果我從一開始就進行加密和解密,那沒問題。 我不知道foxpro的Encrpyt和Decrypt方法在做什么,以了解如何在C#中應用相同的加密和解密方法。
這是foxpro中對Encrypt的調用。
encyptedString = ENCRYPT(saltString + unencryptedString, secretkey_aes256,2,0)
這是foxpro中對Decrypt的調用(第二行刪除了鹽)
unencryptedString = DECRYPT(encryptedString, secretkey_aes256,2,0)
unencryptedString = SUBSTR(unencryptedString, LEN(saltString) + 1)
我顯然知道saltString和secretkey_aes256的值,是的aes256是一個線索,但是我不知道參數2和0在做什么。
以為有人會從解決這個難題中解脫出來,也許對他們來說這甚至不是難題。 我已經研究了幾個小時,但到目前為止我對加密和解密還不夠了解。
任何幫助表示贊賞。
編輯:
如果2表示AES256,0表示ECB,則有關我在以下代碼中做錯了什么的任何線索?
public string DecryptString(string encrypted)
{
RijndaelManaged myAES = new RijndaelManaged();
myAES.KeySize = 256;
myAES.BlockSize = 256;
myAES.Mode = CipherMode.ECB;
myAES.Padding = PaddingMode.None;
byte[] _key = ASCIIEncoding.UTF8.GetBytes(_secret);
myAES.Key = _key;
byte[] encrypted_bytes = ASCIIEncoding.UTF8.GetBytes(@encrypted.Trim());
ICryptoTransform decrypto = myAES.CreateDecryptor();
string decrypted = "";
decrypted = ASCIIEncoding.UTF8.GetString(decrypto.TransformFinalBlock(encrypted_bytes, 0, encrypted.Trim().Length));
return decrypted;
}
VFP沒有內置的加密和解密功能,因此編寫代碼的人都使用了第三方產品。 克里斯·迪弗(Chris Diver)可能是正確的,因為那是克雷格·博伊德(Craig Boyd)的VFPEncryption.FLL。 這是該庫的最新文檔: http : //www.sweetpotatosoftware.com/spsblog/2009/08/09/MajorVFPEncryptionUpdate.aspx
由於沒有足夠的信息,您將需要進行一些實驗以找到正確的BlockSize
(256位?)和IV
,我認為它們都設置為0x00。
對於解密本身就可以使用RijndaelManaged
與KeySize
設置為256位和Mode
設置為ECB
-一個很好的起點是http://msdn.microsoft.com/en-us/library/system.security.cryptography.rijndaelmanaged.aspx
AES256的塊大小為128位,密鑰大小為256位。 因此,您需要將RijndaelManaged實例的塊大小設置為128, 而不是 256。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.