我收到错误' Base-64字符数组或字符串的长度无效。'。
我尝试过两种不同的编码字符串
即:1。 ZGVudmVyZ29tZXMyMTEw
正确解密为:DENVERGOMES2110
和
2. c2FkZGFtaHVzc2Fpbg==
给出了错误。字符串是'SADDAMHUSSAIN'。
我正在使用ASP.net MVC 4.这是我的代码:
的控制器:
public string EncryptUsername(string userID, int status)
{
string strResult = string.Empty;
StudentRegistrationDAL dal = new StudentRegistrationDAL();
strResult = dal.EncryptDecryptUsername(userID, status);
return strResult;
}
的 DataAccessLayer.class:
public string EncryptDecryptUsername(string userID, int status)
{
string encUsername = string.Empty;
ReverseEngineerDAL encryptDecryptDAL = new ReverseEngineerDAL();
if (status == 1)
{
encUsername = encryptDecryptDAL.EncodePasswordToBase64(userID);
}
else if (status == 2)
{
encUsername = encryptDecryptDAL.DecodeFrom64(userID).ToUpper();
}
return encUsername;
}
的 ReverseEngineerDAL.class:
public class ReverseEngineerDAL
{
public string EncodePasswordToBase64(string password)
{
try
{
byte[] encData_byte = new byte[password.Length];
encData_byte = System.Text.Encoding.UTF8.GetBytes(password);
string encodedData = Convert.ToBase64String(encData_byte);
return encodedData;
}
catch (Exception ex)
{
throw new Exception("Error in base64Encode" + ex.Message);
}
}
public string DecodeFrom64(string encodedData)
{
System.Text.UTF8Encoding encoder = new System.Text.UTF8Encoding();
System.Text.Decoder utf8Decode = encoder.GetDecoder();
byte[] todecode_byte = Convert.FromBase64String(encodedData);
int charCount = utf8Decode.GetCharCount(todecode_byte, 0, todecode_byte.Length);
char[] decoded_char = new char[charCount];
utf8Decode.GetChars(todecode_byte, 0, todecode_byte.Length, decoded_char, 0);
string result = new String(decoded_char);
return result;
}
}
我在string DecodeFrom64(string encodedData)
的“ ReverseEngineerDAL.class ”上遇到错误:
byte[] todecode_byte = Convert.FromBase64String(encodedData);
任何人都可以帮我解决这个错误。或发现我的代码中的错误?
任何帮助,将不胜感激。感谢。
答案 0 :(得分:1)
刚才发现我错误地获取了加密值。
有一个javascript拆分方法,用于修剪加密文本后的==
。
我的C#代码运行正常。只是一点谷歌搜索和阅读Stack上的几个帖子帮助了我。
这是我的Jquery代码,我做了一些小改动。
function GetParameterValues(param) {
var url = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for (var i = 0; i < url.length; i++) {
/*var urlparam = url[i].split('=');
if (urlparam[0] == param) {
return urlparam[1];
}*/
var urlparam = url[0].substring(2, url[0].length);
return urlparam;
}
}
评论部分正在创建问题,因为它正在修剪=(相等)标志。
Manuel Zelenka的评论给了我这个提示。
我感谢大家的评论。非常感谢大家。