簡體   English   中英

具有多個轉換的 MYSQL SHA2 512

[英]MYSQL SHA2 512 with multiple transformations

我必須計算 SHA2 512 校驗和,但也有“轉換次數”的要求。 我找不到任何答案。 任何人都可以幫助我使用 MYSQL/MSSQL 嗎? 是否有可能使用這些語言?

編輯:轉換次數:5000

SELECT (SHA2( '20191018143572123034102012221314181237774212' , 512));

收到: 371a4fbf2b393338d0a6c619ec18fe5f636fdc1992c09763acfd5dae0bb97b13359fb091e4a196ba085d1a60a312733d6a384e937e32c9aef7063c7911d46b84

預期: f8b915776eab735fdd10266b2e66068447904852b82c30eeb6de30703a087eb17ea4c4a37630494607194ddb9354c1211bd984fb5f4d9cff95f5a24ed52065e7

用 5000 行或更多行填充表格。

mysql> create table n ( n smallint unsigned auto_increment primary key);
mysql> insert into n (n) select null;
mysql> insert into n (n) select null from n;
... repeat doubling the rows in the table until you have more than 5000 rows ...

將會話變量設置為您的原始字符串。

mysql> set @value = '20191018143572123034102012221314181237774212';

將變量設置為 5000 行集中每一行的自身散列。

mysql> select @value := sha2(@value, 512) from n limit 5000;

該查詢的最后一行將是散列 5000 次的結果。 您還可以查詢變量的當前值:

mysql> select @value;
+----------------------------------------------------------------------------------------------------------------------------------+
| @value                                                                                                                           |
+----------------------------------------------------------------------------------------------------------------------------------+
| f8b915776eab735fdd10266b2e66068447904852b82c30eeb6de30703a087eb17ea4c4a37630494607194ddb9354c1211bd984fb5f4d9cff95f5a24ed52065e7 |
+----------------------------------------------------------------------------------------------------------------------------------+

坦率地說,這在除 SQL 之外的幾乎任何其他編程語言中都更容易。

你應該只使用一個循環。

您可能還想使用一種不同的哈希方法,該方法使用密鑰拉伸而不是依賴 SHA2 的 5000 次重復。 通常,多次重復重新散列是為了使計算時間更長,從而降低攻擊者嘗試自動密碼猜測器的吸引力。

如果您想添加一個小的延遲,您也可以只使用SELECT SLEEP(1)或應用程序中的等效函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM