有谁知道,为什么以下代码在某些机器上返回不同的结果?
Private Shared Function ComputeHashValue(ByVal Data As String) As String
Dim HashAlgorithm As SHA512 = SHA512.Create
Dim HashValue() As Byte = HashAlgorithm.ComputeHash(Encoding.ASCII.GetBytes(Data))
' Looping over the array and ANDing each byte with 0111111
For i As Integer = 0 To HashValue.Length - 1
HashValue(i) = HashValue(i) And Convert.ToByte(127)
Next
Return Encoding.ASCII.GetString(HashValue)
End Function
Private Shared Function AreByteArraysEqual(ByVal array1 As Byte(), ByVal array2 As Byte()) As Boolean
If array1.Length <> array2.Length Then Return False
For i As Integer = 0 To …
Run Code Online (Sandbox Code Playgroud) 这是一个有效的盐生成代码.如果它无效,它会怎么做然后请解释我应该做什么,请稍微减少一点技术我只有15
$password='123'//test password
$salt=openssl_random_pseudo_bytes(rand());//generate salt
$prehash_password=hash('sha512',$password);//pre hash the password
$final_password=hash('sha512',$password.$salt)//generate the final password
Run Code Online (Sandbox Code Playgroud)
结果....(太长了所以裁剪它)
=m]ˆÂýÇâ&-Ù©Þ}§˜ü=l|‹|oÓÌ×±[ý’p'lJÛ|›¦nXÝx܆9óÔ¢¤ÿ‰"µ^¾õJ JI^íó,•±†û½L›T0*Stÿ#s´Ë§ÔMgå.£J§èeRzù/‡üœ¿ª¡ ǹáuT¯ '0¯ÄŒÐ²A@ü •uuYRpýš™ü5%P—í¬ïr‚×ODÜ—´“„?”öÛž;Bí#Þcõ&¾qLEâ« |Z¯ÔÐö%R•9âǸ—•êäxZ³ÎɶÉêS\™!qóœ[)ÚúÞçøƒŠº¾*Ü/X"Œê@µð¶¨$p1£B5iÚ Ú†õʬɦE3^ür¾auD»ëêA)d„ÏHzYÁepƒê¬~ô¡œ8e‡ñˆÖM&èæ<ëâM"-¹uSÂÖøsBŒiÓÑ!³ÊÅwÛö>kHåO'dyÁ(<Ýx´Ÿì¸¤˜)èÀ©@ëQæ‚Ëã:04q-‡è—žÄ"tÌÀ±IŒW1p–̇bïV¢¼-$»¥ˆlË*Ê^¡´ZK ×±›mßhœôNþ`‰û§4p9 þ]Ùö®u*)ú24qØI£–]†#8kÐ>a…t fö¾¶+k—a ?L¯¶ƒÎµÜz‘k†—)+¥qþÞ \®qÔª|ãO¹¥ô?I°®íɨ‘‡3 dÿë€ìV&"+Ï}*L퀟h"p Ø"ð¶Øäç6ˆkƒ¹òÓ@FK²Ä?åüï<:CˆšÛƒ1J®b™ý)žy´ÔĶa™_Áïx^—õö6Ãqc€õš¾©÷M—¡å´7ÁÑ©Nà›¶AÚ¢öEM:"¶Ž4iáîµ&Cþ²Pû¶££.ÿ *?©ñÞ`&ÞGøó§¦_B¸‡h–¦éÞæ'裩n¥êý5‘¿kcñV‰1?xçÛ#”C0ÒÁià¿0Ÿ¥çWdŘ]íhæS'ã'–ÿðò§ü‡ì¨šãfïï Á0ó7kÀ%±N“£\Br)"úkl슢˜˜[’€:º–Í GaùÛaçˆwsÔÚ‚õòSd›±ltWZ›è_¹ªÿã§%ÉÞxŸKÊMUYÜJ@Šý+BBL¤®Š± „¼‚ÈûæÀŠBñã“„º/oú–·fJäƒrÀ°‡¤N2¸×kìô"aõÙ%ÚÂWŸÿ–†Œ»Còc?…£Rw4ËZ_W§{b™”î—/ľ›:ºj;U.½ÓM “É¥8T37?¿UÃh5Ľ>éÎÔášÄxÀ¥ä·$í÷äÕÖ·¿Oowç<ÖÅ!XNâjW”öb1GâÔ¯yYÇ+¶pL´[sŠÍT.×KXNK“kh-ñ@bÌÜ^Ü÷]é ¿}fkøD‡0GE îŽï˜;pÂsжZfÀ§1gjõÂcøwãj•‡'BšÓ{»£¬²BhaA2ÿT Ë~S{‹øÏàïnñhÁn ýˆÜzŽ*`5ÉŽAsqaùðĶü¿ƒ 5g>ë¥Uå!-£SÂr–ELÿ*à&;½¤&›y™Ž6¼³ªø ȮMP÷G©‹:ø_•ÜAaA«jb;‹¨ÓŠĹ‰¤¼l*S ï?ö„óÑ žsÌ=,&å x— a´è2éòyÄlÝŠ*žÄ¥ÆnÀ¨ã³¡ ÝòÆFƒDÁ*D ;™±™½fÀßÃ¥‹{â«ZËÅøÁY‚Œ”².—ÆÀMuüÃÙR™;c6ì€Î®û°Éƒ„bЖ{íWáßõíì’¬¾ßaÙ°^læ¿r{ƒ,ãaì?ZÞ‚á>m9‚€’ѧÑú\VFÏ\b¶c'E¨)óå€Â˜¾bæ¿;nðî¶Äê=fè8cÊ©"¹K sF¢Æš³ ²ˆô6*®&Øç$î6ÐZÆú”Ž‹S¹)šå‡j¶ý¥¹3áBy+ìç°ÏHHg®™:ä`Oà^4Æ–(Øx$…ÖýdÎÞfvr"ÙCU¼Áë¸;½›ÂMy.fRlÓûñ9HÕ6V•.–‚“3¬ig_HSÀíñæ…ïþqž—7¾_;ó«(«ãøguBš"ã·pÓïvŠªÜ²•tÚÒ=Jî„d|¤MxžŠÝ’Œ>`
Run Code Online (Sandbox Code Playgroud) 这是我的代码,我不知道为什么它会在控制台中生成一个奇怪的代码
(输出是"b5?2 ?????????????????????????????????????????????? _ ??? J·" 没有引号)
Private Sub TestSHA512()
Dim key As String = "635357773463315343"
Dim pass As String = "somepasswd"
Dim enc As System.Text.Encoding = New System.Text.ASCIIEncoding
Dim keyBytes() As Byte = enc.GetBytes(key)
Dim passBytes() As Byte = enc.GetBytes(pass)
Dim SHA As New HMACSHA512(keyBytes)
Dim resultBytes() As Byte = SHA.ComputeHash(passBytes)
Console.WriteLine(enc.GetString(resultBytes))
Console.WriteLine(enc.GetString(SHA.Hash)) 'same...
End Sub
Run Code Online (Sandbox Code Playgroud) 我在GoLang工作我的授权模块.在我们使用PHP5和crypt函数之前.哈希的生成方式与SHA-512相同:
$6$rounds=5000$usesomesillystri$D4IrlXatmP7rx3P3InaxBeoomnAihCKRVQP22JZ6EY47Wc6BkroIuUUBOov1i.S5KPgErtP/EN5mcO.ChWQW21
Run Code Online (Sandbox Code Playgroud)
并存储在数据库中.但现在我需要让它在GoLang中运行.我在Google上搜索并尝试了不同的东西,例如:
t512 := sha512_crypt.Crypt("rasmuslerdorf", "$6$usesomesillystringforsalt$")
fmt.Printf("hash: %v\n", t512)
Run Code Online (Sandbox Code Playgroud)
但都会产生不同的东西.谁能进一步帮助我们?
我们想要验证并创建像php版本一样的哈希.
提前致谢.
我在出版物中看到过这段代码.它为生成哈希11次带来了什么好处?由于熵,它比一个更安全吗?
var hash = sha512(salt+":"+user+":"+passwd);
for(i = 0; i < 10; i++)
hash = sha512(salt+":"+user+":"+passwd);
Run Code Online (Sandbox Code Playgroud) 我正在尝试加密数据以发送到API.
API要求将数据作为hmac_sha512
加密哈希发送.
我已经找到了各种各样的例子,说明它可能是如何为sha1
其他人(而不是sha512
)以及旧版本的Swift完成的.
我尝试过的所有例子都没有 swift 3.1
任何正确方向的帮助将不胜感激.
编辑:
在PHP中,我使用以下方法成功发送:
$sign = hash_hmac('sha512', $post_data, $this->secret);
Run Code Online (Sandbox Code Playgroud)
编辑2:
我did add briding header
,我不知道下一步该做什么!由于之后的代码示例不适用于swift 3.1 :(
编辑3:
解决了!猜猜看,我正在错误地创建新的标题!:(
PS我试图避免使用CryptoSwift,专注于CommonCrypto.
下面给出的答案是不正确的,因为它不允许hmac获得加密密钥.我做了研究,终于搞定了.这篇文章包含了hmac的工作示例项目:https://github.com/nabtron/hmacTest
更新:
SHA-512是单向的,所以我不需要尝试破解密码,因为简单地重置密码更容易.如果有人知道从SHA-512散列文本中获取原始密码,请告诉我.否则,我正在继续这个问题.谢谢你的所有答案.
原始问题:
我已经阅读了很多文章,声明SHA-512哈希不能没有散列.但是,这里有各种SHA-1 +算法的源代码:https://tls.mbed.org/sha-512-source-code.
我想知道是否可以在某种程度上反转这种编码来解密SHA-512散列文本.Linux使用SHA-512散列加密其密码.作为系统管理员,我更愿意根据需要简单地解密或取消这些信息,而不是猜测密码是否正确或查看是否匹配.创建新密码可能会带来大量额外的时间和金钱.如果您不愿意发布此信息并希望私下讨论,请随时索取我的联系信息.
谢谢!
在Multicraft面板中使用SHA512作为加密(您可以更改MD5的设置),但我需要使用同一数据库的旧版本.此旧版本没有使用SHA512进行加密的选项,但只能使用MD5进行加密.因此,MD5的所有密码均无效.
可以将MySQL数据库中的所有SHA512密码转换为MD5吗?