オンラインで狩りを行い、文字列を受け取り、暗号化して解読する単純な暗号化方法を見つけました。アイデアは私が計画テキストに入れることができないURLに必要なIDを持っているということです。暗号化された文字列には結果にスラッシュ(/)が含まれているため、URLに問題が発生します。
は、私が見つけたクラスは、ほとんどの時間を素晴らしいworkesが、時には、私は/それであり、暗号化された文字列で終わる:あなたが想像できるように使用された場合
OSprnGR/0os4DQpQsa0gIg==
は、それが問題を引き起こしURL。だから私は文字列をUrlEncodeすれば問題を解決できると思った。
これはありませんでした。
私はまだURLは次のようになります場合でも、同じエラーが出ます:
http://localhost:54471/BrokerDashboard/BuyingLeads/LeadView/OSprnGR%2f0os4DQpQsa0gIg%3d%3d
の代わりにこの:
http://localhost:54471/BrokerDashboard/BuyingLeads/LeadView/OSprnGR/0os4DQpQsa0gIg==
HTTPエラー404.0 - が見つかりませんでした あなたが探しているリソース削除されたか、名前が変更されたか、一時的に使用できません。
ここで私が使用しているクラスの:
public static class Encryption
{
public static string keyString { get { return "6C3A231C-57B2-4BA0-AFD6-306098234B11"; } }
private static byte[] salt = Encoding.ASCII.GetBytes("somerandomstuff");
public static string Encrypt(string plainText)
{
Rfc2898DeriveBytes key = new Rfc2898DeriveBytes(keyString, salt);
MemoryStream ms = new MemoryStream();
StreamWriter sw = new StreamWriter(new CryptoStream(ms, new RijndaelManaged().CreateEncryptor(key.GetBytes(32), key.GetBytes(16)), CryptoStreamMode.Write));
sw.Write(plainText);
sw.Close();
ms.Close();
string beforeUrlEncoded = Convert.ToBase64String(ms.ToArray());
string afterUrlEndcoded = HttpUtility.UrlEncode(beforeUrlEncoded);
return afterUrlEndcoded;
}
public static string Decrypt(string encrypted)
{
//string urlDecoded = HttpUtility.UrlDecode(encrypted); // <--- Turns out you don't need this
Rfc2898DeriveBytes key = new Rfc2898DeriveBytes(keyString, salt);
ICryptoTransform d = new RijndaelManaged().CreateDecryptor(key.GetBytes(32), key.GetBytes(16));
byte[] bytes = Convert.FromBase64String(encrypted);
return new StreamReader(new CryptoStream(new MemoryStream(bytes), d, CryptoStreamMode.Read)).ReadToEnd();
}
}
EDIT:
は、ここでのルートです:
routes.MapRoute(
name: "BrokerLead",
url: "BrokerDashboard/BuyingLeads/LeadView/{id}"
);
あなたは 'HttpUtility.UrlEncode'の代わりに' HttpServerUtility.UrlTokenEncode'を使ってみましたか? –
ちょうどあなたがすでにbade64に関するWikipediaの記事を読んでいることを確認して、そのURLの安全なバージョンを使用する可能性を捨てました。私はポストでそれを明確にすることをお勧めします。 –
@AlexeiLevenkov - .NETはURL Safe Base64エンコーディングを使用できますか? –