我有一个包含数千个md5加密密码的数据库,我需要迁移到sha256.通过使用md5访问保留旧密码和使用sha256加密的新密码,最安全的方法是什么?谢谢.
我需要一些指导,我需要检查来自UI表单(即Authentication对象)的密码,我需要使用SHA-256 + constant salt(在进行比较之前)进行哈希处理,密码来自DB(DB也有密码+盐)使用Spring安全.
我想比较使用相同的SALT值生成的这两个不同的散列值.我们如何在java中做到这一点?有人可以分享一下示例代码吗?
在Java和Swift中计算sha256时,它不匹配.
Java的:
MessageDigest digest = MessageDigest.getInstance("SHA-256");
digest.update(secretKey.getBytes("UTF-8"));
byte[] secretKeyBytes = secretKey.getBytes("UTF-8");
byte[] keyBytes = new byte[16];
System.arraycopy(digest.digest(), 0, keyBytes, 0, keyBytes.length);
Run Code Online (Sandbox Code Playgroud)
结果: [44, 112, -31, 43, 122, 6, 70, -7, 34, 121, -12, 39, -57, -77, -114, 115]
迅速:
let secretKeyBytes = [UInt8](secretKey.utf8)
var digest = SHA2(variant: SHA2.Variant.sha256)
try digest.update(withBytes: secretKeyBytes)
let keyDigest = try digest.finish()
let keyBytes = Array(keyDigest[0...15])
Run Code Online (Sandbox Code Playgroud)
结果: [44, 112, 225, 43, 122, 6, 70, 249, 34, 121, 244, 39, 199, 179, 142, 115]
它以相同的值开始,但随后开始变化
我目前正在开发一个项目(速度为3/4),在该项目中,我需要哈希格式如下的HTTP请求:
{"request": {"method": "getMyPeople",
"params": {"api_key": 00de5089d590e413807343166da22a45,
"user_id": 8 }, "id": "1"}}
Run Code Online (Sandbox Code Playgroud)
我试图散列SHA-256用密钥,一些看起来是这样的:
6b107c7ebebf056e1c45924d0546d35e
Run Code Online (Sandbox Code Playgroud)
我需要的:
是)我有的:
我尝试过的解决方案: 我最近的尝试是Zaph的帖子(/sf/answers/2747494431/)。
当我的问题时: 我的问题似乎发生时,我尝试的形式转化
hashSHA256: <aabc766b 6b357564 e41f4f91 2d494bcc bfa16924 b574abbd ba9e3e9d a0c8920a>
Run Code Online (Sandbox Code Playgroud)
在Zaph的帖子看到,他们把它以这种形式,我需要它在十六进制字符串的形式。
如果有人需要进一步澄清,请告诉我。预先感谢您的帮助!
我目前正在用 C# 做一个程序。当我尝试将字符串从 sha256 传递到 base64 时,我意识到它没有正确编码。
例如,给定 sha256
cd69ef0284bba33bc0b320e6479c2da2d411a5e46af060d8639f0e0bfc24f26d
Run Code Online (Sandbox Code Playgroud)
我的代码产生
Y2Q0Q2OUVGMDI4NEJCQTMzQkMwQjMyMEU2NDc5QzJEQTJENDExQTVFNDZBRjA2MEQ4NjM5RjBFMEJGQzI0RjI2RA==
Run Code Online (Sandbox Code Playgroud)
我期待得到的是
zWnvAoS7ozvAsyDmR5wtotQRpeRq8GDYY58OC/wk8m0
Run Code Online (Sandbox Code Playgroud)
为什么编码的字符串如此不同,我错过了什么?
这是我正在使用的代码
string t1 ="cd69ef0284bba33bc0b320e6479c2da2d411a5e46af060d8639f0e0bfc24f26d";
var t2= System.Text.Encoding.GetEncoding(1252).GetBytes(t1);
string t3= System.Convert.ToBase64String(t2);
Run Code Online (Sandbox Code Playgroud) 当我“sha256”时,Erlang 返回的结果与 bash 命令不同。
echo a | sha256sum, returns: 87428fc522803d31065e7bce3cf03fe475096631e5e07bbd7a0fde60c4cf25c7 -
Run Code Online (Sandbox Code Playgroud)
埃尔兰
Bin = crypto:hash(sha256, "a").
<<202,151,129,18,202,27,189,202,250,194,49,179,154,35,220,
77,167,134,239,248,20,124,78,114,185,128,119,133,175,
238,72,187>>
Run Code Online (Sandbox Code Playgroud)
我尝试了不同的二进制到十六进制, 但没有一个给出我期望的结果。
我得到这个结果:
bin_to_hex:bin_to_hex(Bin).
<<"CA978112CA1BBDCAFAC231B39A23DC4DA786EFF8147C4E72B9807785AFEE48BB">>
Run Code Online (Sandbox Code Playgroud) 我正在致力于加密 URL 并将工作脚本从 PHP 转换为 ColdFusion。我已经完成了 95% 的工作,但在尝试了 StackOverflow 上的许多解决方案后,我陷入了困境。我的结果仍然不匹配。我确认两个脚本上的saltBin和keyBin值是相同的。请看一看。
PHP版本
\n$saltBin = R\xef\xbf\xbdk\xef\xbf\xbd\xef\xbf\xbdE\xef\xbf\xbdx^ \xef\xbf\xbdO<\xef\xbf\xbd-\xef\xbf\xbd7J=S\xef\xbf\xbdz\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd \xef\xbf\xbd;\n$keyBin = \xef\xbf\xbd;B\xef\xbf\xbd\xef\xbf\xbd|\xef\xbf\xbd \xef\xbf\xbd0U,\xef\xbf\xbd\xef\xbf\xbdh\xef\xbf\xbdNS+\xef\xbf\xbd\xef\xbf\xbd.\xef\xbf\xbd\xef\xbf\xbdG\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\n\nres = hash_hmac(\'sha256\', $saltBin, $keyBin);\nresult\n39ddcd6156a30fdcebc9fbf5dd59a0ef4f47e27841bbc12ce72b64a0a63c0324\nRun Code Online (Sandbox Code Playgroud)\n冷聚变版本
\n<cfset res = hmac(saltBin,keyBin,"HMACSHA256")>\nresult\n30A658BEB3965C2D7D27A3F717FB6C13B05ED44E8B2A5A7FEBB9B57887CF57A0\nRun Code Online (Sandbox Code Playgroud)\n我尝试过以下解决方案
\n\nColdfusion哈希以及hmacSHA256和SHA256之间的区别
\n更新:
\n下面是PHP版本的缩写版本
\n$key = \'943b421c9eb07c830af81030552c86009268de4e532ba2ee2eab8247c6da0881\';\n$salt = \'520f986b998545b4785e0defbc4f3c1203f22de2374a3d53cb7a7fe9fea309c5\';\n$keyBin = pack("H*" , $key);\n$saltBin = pack("H*" , $salt);\n$path = "/rs:fill:300:300:1/g:no/aHR0cDovL2ltZy5leGFtcGxlLmNvbS9wcmV0dHkvaW1hZ2UuanBn.png";\necho hash_hmac(\'sha256\', $saltBin.$path, $keyBin);\nRun Code Online (Sandbox Code Playgroud)\n结果:7062c2b5786c82de963767de4b0cdbc4e7ed7db2ce7466708bf8a28d8572888b
<cfset key = \'943b421c9eb07c830af81030552c86009268de4e532ba2ee2eab8247c6da0881\'>\n<cfset salt …Run Code Online (Sandbox Code Playgroud) 使用 sha256.js 插件我可以对字符串进行编码,但如何在客户端执行相反的过程。我想使用 javascript 或 jquery 插件或 Angular 2/4 中的 npm 包来解码 sha256 编码的字符串
我正在努力实现一些加密函数,其中需要哈希操作(我想计算自定义结构的哈希)所以我想使用cryptogolang包中的SHA256哈希函数.但是,我注意到当我为同一输入多次运行哈希函数时,它会返回不同的值.我的理解是SHA函数为单个输入值返回相同的哈希输出.下面是我对哈希函数的实现:
func myHash(s MyStruct) []byte{
bytes := []byte(fmt.Sprintf("%v", s))
h := sha256.New()
h.Write(bytes)
return h.Sum(nil)
}
Run Code Online (Sandbox Code Playgroud)
并myStruct具有以下字段:
type MyStruct struct {
elliptic.Curve // I use elliptic.P224() as my curve
X, Y, Z *big.Int
}
Run Code Online (Sandbox Code Playgroud)
对于相同的输入值,myHash函数的输出运行多次SInput如下:
[38 39 88 96 46 192 74 20 93 238 4 18 134 253 238 154 210 89 64 204 13 27 60 78 228 33 57 20 173 80 67 196]
[38 39 88 96 46 192 74 …Run Code Online (Sandbox Code Playgroud) 我收到以下代码的弃用警告,
_ = data.withUnsafeBytes {
_ = CC_SHA256($0, CC_LONG(data.count), &digest)
}
Run Code Online (Sandbox Code Playgroud)
'withUnsafeBytes' 已弃用:
withUnsafeBytes<R>(_: (UnsafeRawBufferPointer) throws -> R) rethrows -> R改用
我该如何处理这个问题?
根据 Martin 的建议,我使用了下面的Swift-5代码,
func sha256(data : Data) -> Data {
var hash = [UInt8](repeating: 0, count: Int(CC_SHA256_DIGEST_LENGTH))
data.withUnsafeBytes {
_ = CC_SHA256($0.baseAddress, CC_LONG(data.count), &hash)
}
return Data(hash)
}
Run Code Online (Sandbox Code Playgroud)
这甚至会给编译器带来错误,
类型“UnsafePointer<_>”的值没有成员“baseAddress”
如果我们知道它有 64 个字符的长度并且没有大写的字符并且没有特殊的字符只有数字和小写,如何破解这个哈希?如果我们每秒可以进行大约 1.000.000 次猜测?
是否可以获取原始哈希值,然后将其解码回原始字符串?
hash('sha256', $login_password_for_login)给我一个哈希值,如下所示,但我想从哈希值返回到原始字符串。
使用$login_password_for_login = 12345,该hash函数给了我这个:
5994471abb01112afcc18159f6cc74b4f511b99806da59b3caf5a9c173cacfc5
我希望能够检索登录密码的原始数字或字符串。如何反转哈希值并获取原始字符串?
sha256 ×13
hash ×4
swift ×3
cryptography ×2
encryption ×2
java ×2
base64 ×1
c ×1
c# ×1
coldfusion ×1
decode ×1
deprecated ×1
elixir ×1
encode ×1
erlang ×1
erlang-otp ×1
go ×1
javascript ×1
md5 ×1
php ×1