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

Php SHA-1将文件的base32报告回字符串,php,Php,我很难弄清楚如何实现一个程序,我可以生成一个文件的base32sha-1值。我知道生成一个标准的sha1文件是相当容易的,所以不难理解 $file1 = sha1_file('main.jpg'); 任何帮助都将不胜感激。如果您想将SHA1值编码为Base32,您必须自己编写或找到一个库。PHP没有内置它,就像使用base64\u encode一样 不久前,我需要一个base32_encode函数,所以我写了一个。我不知道它的效率有多高,而且我相信还有更好的,但它确实有效。它位于这里: 使用它

我很难弄清楚如何实现一个程序,我可以生成一个文件的base32sha-1值。我知道生成一个标准的sha1文件是相当容易的,所以不难理解

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

任何帮助都将不胜感激。

如果您想将SHA1值编码为Base32,您必须自己编写或找到一个库。PHP没有内置它,就像使用
base64\u encode
一样

不久前,我需要一个
base32_encode
函数,所以我写了一个。我不知道它的效率有多高,而且我相信还有更好的,但它确实有效。它位于这里:

使用它,您可以执行以下操作:

<?php
include 'Base32.php';

$base32 = new Base32;

$file1 = sha1_file('main.jpg');
echo $base32->base32_encode($file1);
我有一个PHP类,它可以按照RFC4648编码Base32。它实际上更灵活,允许您以2n为基数参数定义许多标准和非标准编码方案

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);

请注意,我还在调用
sha1\u file()
时设置了
$raw\u output=TRUE
。我假设这就是您想要的,因为否则Base32输出将在SHA-1哈希摘要的十六进制表示形式上完成,而不是原始的160位摘要本身。

PHP没有内置的Base32支持。你得找个班来帮你。我做了一个(糟糕的)文件:如果你到处搜索,你可能会找到一个更好的,尽管.sha1_文件是一个哈希函数,它是不可逆的。这是单向加密。@RocketHazmat确实如此:。@RocketHazmat不幸的是,PHP在内部使用整数或其他有限的数据类型,因此您无法转换任意大的值。@Gumbo:根据您是将十六进制数据、二进制数据以32为基数,还是将十六进制转换为32为基数,您会得到不同的答案:(在python中完成以使事情更简单)。似乎一个是“编码”,另一个是“转换”。谢谢您的帮助。当我将php程序中的值与哈希计算器进行比较时,会得到不同的返回结果。我会继续玩下去,看看能得到什么。出于好奇,您正在使用什么哈希计算器?SourceForge的fsum前端是否提供base32,或者您是否使用其他工具进行编码?