第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將 PHP 的二進制部分 + 字符串部分的點連接轉(zhuǎn)換為 C#

將 PHP 的二進制部分 + 字符串部分的點連接轉(zhuǎn)換為 C#

C#
動漫人物 2021-06-04 09:05:51
我正在將一段 PHP 代碼重寫為 C#。此代碼用于密碼散列。在第一步中,它生成一個像“password{salt}”這樣的字符串,然后通過 sha512 哈希算法對其進行哈希處理。之后,循環(huán)再次對第一個散列和鹽的組合進行散列 5000 次迭代。PHP 代碼如下所示:<?php$password = 'abc';$salt = 'def';$salted = $password.'{'.$salt.'}';$digest = hash('sha512', $salted, true);for ($i=1; $i<5000; $i++) {    $digest = hash('sha512', $digest.$salted, true);}$encodedPassword = base64_encode($digest);//$encodedPassword contains the final hash code我能夠在沒有循環(huán)的情況下讓它工作(只有第一個 hash() 調(diào)用)。所以主散列和base64編碼正確完成。我發(fā)現(xiàn)這部分是我無法用 C# 重寫的:$digest.$salted$digest 似乎是一個二進制表示,因為 PHP 的 hash() 函數(shù)使用“true”作為最后一個參數(shù)(參見PHP hash - 手冊)。$salted 是一個字符串。兩者都被 PHP 的 dot / concat 運算符神奇地結(jié)合在一起。我想當(dāng)使用帶有非字符串操作數(shù)的點運算符時,會有某種從二進制到字符串的標準轉(zhuǎn)換。到目前為止,這是我的代碼:void Main(){    string password = "abc";    string salt = "def";    string salted = String.Format("{0}{{{1}}}", password, salt);    byte[] digest = hash(salted);    for(int i = 1; i < 1; i++)     {        digest = hash(String.Format("{0}{1}", System.Text.Encoding.UTF8.GetString(digest), salted));    }    var encodedPassword = System.Convert.ToBase64String(digest);    //$encodedPassword should contain the final hash code}static byte[] hash(string toHash) {    System.Security.Cryptography.SHA512 sha512 = new System.Security.Cryptography.SHA512Managed();    return sha512.ComputeHash(System.Text.Encoding.UTF8.GetBytes(toHash));}如您所見,我嘗試使用 System.Text.Encoding.UTF8.GetString() 將哈希字節(jié)轉(zhuǎn)換回字符串,然后附加鹽,但這不會產(chǎn)生與 PHP 代碼相同的輸出。如果有人可以幫助我,我會很高興。非常感謝你。
查看完整描述

1 回答

  • 1 回答
  • 0 關(guān)注
  • 154 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號