我遇到了麻烦,弄清楚如何实现一个程序,我可以生成一个文件的base32 sha-1值。我知道要弄清楚生成标准sha1文件是相当容易的。
$file1 = sha1_file('main.jpg');
任何帮助都将不胜感激。
答案 0 :(得分:0)
如果要将SHA1值编码为Base32,则必须自己编写或查找库。 PHP没有内置,就像base64_encode
一样。
前一段时间,我需要一个base32_encode
函数,所以我写了一个。我不知道它的效率如何,我确信那里存在更好的效果,但确实有效。它位于:https://github.com/NTICompass/PHP-Base32
使用它你可以:
<?php
include 'Base32.php';
$base32 = new Base32;
$file1 = sha1_file('main.jpg');
echo $base32->base32_encode($file1);
答案 1 :(得分:0)
我有一个PHP类Base2n,它可以根据RFC 4648对Base32进行编码。它实际上比这更灵活,允许您使用2 n参数化地定义许多标准和非标准编码方案 base。
https://github.com/ademarre/binary-to-text-php
在自述文件的第一个示例中演示了Base32。
以下是您的“main.jpg”示例:
// include, require, or autoload Base2n
$file1 = sha1_file('main.jpg', TRUE);
$base32 = new Base2n(5, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567', FALSE, TRUE, TRUE);
$base32FileHash = $base32->encode($file1);
请注意,我还在$raw_output=TRUE
的调用中设置了sha1_file()
。我假设这是你想要的,否则Base32输出将在SHA-1哈希摘要的十六进制表示上完成,而不是原始的160位摘要本身。