我将我的. net webapi移植到. net core webapi。在我使用的旧代码中
Cryptographer.CreateHash("SHA1CryptoServiceProvider", strPass);
为此,我使用了库Microsoft.Practices.EnterpriseLibrary.Security.Cryptography
但在移植到.net core之后,我面临的问题是:
{System.MissingMethodException: Method not found: 'System.AppDomainSetup System.AppDomain.get_SetupInformation()'.
at Microsoft.Practices.EnterpriseLibrary.Common.Configuration.SystemConfigurationSource.SafeGetCurrentConfigurationFile()
at Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ConfigurationSourceFactory.Create()
at Microsoft.Practices.EnterpriseLibrary.Common.Configuration.EnterpriseLibraryContainer.SetCurrentContainerIfNotSet()
at Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.Cryptographer.GetHashProvider(String hashInstance)
at Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.Cryptographer.CreateHash(String hashInstance, String plaintext)
at Social27Bot.DAL.Data.Mappers.Security.EncryptPass(String strPass)
对此的解决方案是什么?
试试这个,
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Http;
using Microsoft.VisualBasic;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using DevExtremeAspNetCoreApp07052019.App_Start;
namespace DevExtremeAspNetCoreApp07052019.App_Start
{
public class HelperClass
{
public static char Mid(string param, int startIndex, int length)
{
Char result = Convert.ToChar(param.Substring(startIndex, length));
return result;
}
public static string Decrypt(string icText)
{
int icLen;
string icNewText = "";
char icChar;
//icChar = '' ;
icLen = icText.Length;
for (int i = 0; i <= icLen-1; i++)
{
icChar = Mid(icText, i, 1);
switch (Strings.AscW(icChar))
{
case object _ when 192 <= Strings.AscW(icChar) && Strings.AscW(icChar) <= 217:
{
icChar = Strings.ChrW(Strings.AscW(icChar) - 127);
break;
}
case object _ when 218 <= Strings.AscW(icChar) && Strings.AscW(icChar) <= 243:
{
icChar = Strings.ChrW(Strings.AscW(icChar) - 121);
break;
}
case object _ when 244 <= Strings.AscW(icChar) && Strings.AscW(icChar) <= 253:
{
icChar = Strings.ChrW(Strings.AscW(icChar) - 196);
break;
}
case 32:
{
icChar = Strings.ChrW(32);
break;
}
}
icNewText = icNewText + icChar;
}
// icNewText = Microsoft.VisualBasic.StrReverse(icNewText);
return (icNewText);
}
public static string Encrypt(string icText)
{
int icLen;
string icNewText = "";
char icChar;
icLen = icText.Length;
for (int i = 1; i <= icLen; i++)
{
icChar = Mid(icText, i, 1);
switch (Strings.AscW(icChar))
{
case object _ when 65 <= Strings.AscW(icChar) && Strings.AscW(icChar) <= 90:
{
icChar = Strings.ChrW(Strings.AscW(icChar) + 127);
break;
}
case object _ when 97 <= Strings.AscW(icChar) && Strings.AscW(icChar) <= 122:
{
icChar = Strings.ChrW(Strings.AscW(icChar) + 121);
break;
}
case object _ when 48 <= Strings.AscW(icChar) && Strings.AscW(icChar) <= 57:
{
icChar = Strings.ChrW(Strings.AscW(icChar) + 196);
break;
}
case 32:
{
icChar = Strings.ChrW(32);
break;
}
}
icNewText = icNewText + icChar;
}
return (icNewText);
}
public static string ReplaceFirstOccurrence(string Source, string Find, string Replace)
{
string result = "";
int Place = Source.IndexOf(Find);
if (Place != -1)
{
result = Source.Remove(Place, Find.Length).Insert(Place, Replace);
}
else
{
result = Source;
}
return result;
}
public static string SQLString(string sStrings, Boolean Trim = true)
{
//Get
//{
if (Trim)
{
if (sStrings != null && sStrings.Trim() != "")
return ReplaceFirstOccurrence(sStrings.Trim(), "'", "''");
else
return "";
}
else if (sStrings.Trim() != "")
return ReplaceFirstOccurrence(sStrings, "'", "''");
else
return "";
//}
}
}
}
长话短说,EntLib是十多年前创建的一个遗留库。不要使用它。它从来没有打算在.NETCore中使用,显然,也从来没有升级过以使用它。使用KeyDerivation。而是Pbkdf2。
在此特定情况下,您根本不能使用 EntLib,因为它会尝试使用不存在的属性“应用程序域.安装程序信息”。类在 .NET Core 的第一个版本中被删除,并添加回 i .NET Core 2.0。即使是现在,它也不能提供所有成员,包括安装程序信息
。
正如文档页面所解释的,这个属性将被添加回。NET Core 3.0,将于9月发布。
真正的解决方案是首先不使用此类代码,并使用 ASP.NET 核心的身份来存储密码。
像这样使用SHA1对密码进行哈希处理是微不足道的,可以在几分钟内破解,如果不是更少的话。很久以前,当人们曾经创建彩虹表时,预先计算出所有密码组合的SHA1哈希值,只需查找哈希即可找到密码。如今,暴力破解它可能比搜索一大堆哈希值更快。
ASP.NET总是提供更安全的密码散列和存储,包括盐析和多次散列迭代。在ASP.NETWeb窗体和旧版本的MVC中,使用了盐析和至少1000次散列迭代。
ASP。NET Core Identity还提供安全的哈希和存储。使用它是最简单、最安全的选择。它是开源的,所以即使不能使用它,也很容易检查它是如何散列密码的。
哈希密码 V3 方法使用 ASP.NET 核心的密钥提取类对用户提供的密码进行哈希处理。代码非常简单。从本质上讲,它是对密钥分解.Pbkdf2 的调用,其中包含一个 16 字节的盐,该盐返回一个 32 字节的哈希缓冲区。
byte[] salt = new byte[16];
rng.GetBytes(salt);
byte[] subkey = KeyDerivation.Pbkdf2(password, salt, KeyDerivationPrf.HMACSHA256,
iterCount, 32);
代码的其余部分将哈希算法 ID、哈希字节、迭代计数和 salt 打包到单个字节数组中,以便存储在表中。这些属性可以存储在表的不同列中,但将所有内容放在单个byte[]数组中更方便。
VerifyHashedPasswordV3稍后读取存储的缓冲区,提取属性并对提供的密码进行哈希处理,然后再检查存储和计算的哈希
问题内容: 我的意思是: 也许像: 在PHP中,您该怎么做? 尝试使用 ,但对我不起作用。 问题答案: 更新 PHP 7就绪版本。它使用PHP OpenSSL库中的openssl_encrypt函数。
我的意思是: 可能是这样的: null 尝试使用,但对我不起作用。
我知道有几个与此相关的问题,但是大多数答案都提供了.NET4.0及以上版本的解决方案。对于我的用途,我必须以.NET3.5为目标。我想简单地加密和解密一个字符串存储在一个文件中,所讨论的文本不是敏感的用户/个人信息。
本文向大家介绍.net core使用MD5加密解密字符串,包括了.net core使用MD5加密解密字符串的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了.net core使用MD5加密解密字符串的具体代码,供大家参考,具体内容如下 调用加密 解密看效果 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
我感兴趣的是构建一个个人使用的小应用程序,它将使用JavaScript在客户端加密和解密信息。加密的信息将存储在服务器上的数据库中,但不会存储解密的版本。 它不一定要是超级duper安全的,但我想使用一个当前未中断的算法。 理想情况下我可以做一些 生成编码字符串,以及类似于 以后再解码。 到目前为止,我已经看到了以下内容:http://bitwiseshiftleft.github.io/sjcl
使用lib中的模块在python中解密和加密字符串。最简单的方法 现在我想解密我之前输入的字符串。。