我想更新数据库中的所有密码以获得MD5哈希密码.以下不能解决我的问题:
UPDATE USERS SET USERPASS = hash('SALT' || USERPASS);
Run Code Online (Sandbox Code Playgroud)
问题是:它返回一个未使用MD5算法生成的哈希.我如何在Firebird中实现md5哈希算法?
遗憾的hash是,文档中没有提到函数的algortihm ...无论如何,您可以将其实现为UDF或使用实现它的第三方UDF库.在IBPhoenix网站上有一个针对Firebird的UDF库列表,似乎rFunc和FreeAdhocUDF库都有一个(我只检查了这两个,可能还有其他).
Firebird 4.0 添加了加密哈希函数。引用Firebird 4.0 发行说明:
CRYPT_HASH()
亚历克斯·佩什科夫
接受的参数可以是 DSQL/PSQL 识别的任何类型的字段、变量或表达式,并返回使用指定算法根据输入参数计算得出的加密哈希值。句法
Run Code Online (Sandbox Code Playgroud)CRYPT_HASH( <any value> USING <algorithm> ) <algorithm> ::= { MD5 | SHA1 | SHA256 | SHA512 }例子
Run Code Online (Sandbox Code Playgroud)select crypt_hash(job_title using sha256) from job;笔记
- 此函数返回一个 VARBINARY 字符串,其长度取决于指定的算法。
- 由于已知的严重问题,不建议使用 MD5 和 SHA1 算法,这些算法仅用于向后兼容。
Firebird 4 可以从https://www.firebirdsql.org/en/firebird-4-0/下载
另请参阅CRYPT_HASHFirebird 4.0 语言参考中的文档。
| 归档时间: |
|
| 查看次数: |
5097 次 |
| 最近记录: |