我必须计算SHA2 512校验和,但也需要“转换数”。我找不到任何答案。有人能帮我使用MYSQL/MSSQL吗?有可能使用这些语言吗?
编辑:转换数: 5000
SELECT (SHA2( '20191018143572123034102012221314181237774212' , 512));接受371a4fbf2b393338d0a6c619ec18fe5f636fdc1992c09763acfd5dae0bb97b13359fb091e4a196ba085d1a60a312733d6a384e937e32c9aef7063c7911d46b84 :
预期: f8b915776eab735fdd10266b2e66068447904852b82c30eeb6de30703a087eb17ea4c4a37630494607194ddb9354c1211bd984fb5f4d9cff95f5a24ed52065e7 :
发布于 2020-01-21 15:41:46
用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之外的任何其他编程语言中都更容易。
你应该用个循环。
您还可能希望使用另一种散列方法,它使用键拉伸而不是依赖于5000次SHA2。通常情况下,重复多次重哈希是为了使计算耗时更长,从而降低攻击者尝试自动密码猜测器的吸引力。
如果您想要添加一个小延迟,也可以在应用程序中使用SELECT SLEEP(1)或等效函数。
https://stackoverflow.com/questions/59843807
复制相似问题