文件的SHA-1 base32报告回字符串

时间:2013-05-15 19:31:56

标签: php

我遇到了麻烦,弄清楚如何实现一个程序,我可以生成一个文件的base32 sha-1值。我知道要弄清楚生成标准sha1文件是相当容易的。

$file1 = sha1_file('main.jpg');

任何帮助都将不胜感激。

2 个答案:

答案 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位摘要本身。