1

我在弄清楚如何实现一个可以生成文件的 base32 sha-1 值的程序时遇到了麻烦。我知道要弄清楚生成一个标准的 sha1 文件并不难。

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

任何帮助,将不胜感激。

4

2 回答 2

1

如果要将 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);
于 2013-05-15T20:21:09.877 回答
0

我有一个 PHP 类Base2n ,它可以根据 RFC 4648 对 Base32 进行编码。它实际上比这更灵活,允许您以 2 n 为基数以参数方式定义许多标准和非标准编码方案。

https://github.com/ademarre/binary-to-text-php

Base32 在 README 文件的第一个示例中演示。

这是您的“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 位摘要本身。

于 2013-05-21T20:18:30.263 回答