我们需要使用 sha2 算法对 Windows 软件进行签名,但安装 signtool 似乎是一个问题,因为我很难在我的机器上安装该软件。
此外,我想在linux上签署exes。
我们曾经使用符号代码执行任务,但它仅支持 sha1 和 md5。自 2016 年 1 月 1 日起,不再接受 sha1 和 md5。
因此,我想知道执行任务的替代方法是什么。
更新:我确实从另一台计算机中提取了一个签名工具,它也用时间戳对文件进行了签名:
signtool.exe sign /fd SHA256 /a /f file.pfx /p my password /t http://timestamp.verisign.com/scripts/timstamp.dll filetosign.exe
Run Code Online (Sandbox Code Playgroud)
它确实显示为使用 SHA256 签名,并且有时间戳,但 InternetExplorer 仍然存在问题。
恕我直言,仍然需要解决这个问题,以了解是否有替代方案,以及该替代方案是否可以在 Linux 下工作,因为可以完成这项工作的替代工具意味着,由于 signtool,该解决方案无法正常工作,如反对证书问题或 IE 问题。
我想知道 SHA-2 的空间和时间复杂度是多少。我试着环顾四周,并没有真正得到一个直接的答案。谁能帮我吗?非常感谢!
我现在正在试验 PBKDF2 作为我的密码,我突然意识到,如果我将来升级到更快的机器,我会想要增加 PBKDF2 迭代的次数。但是,这将使我存储的所有当前密码无效。我看到的一个想法是将 PBKDF2 设置与密码(类似于您存储盐的方式)一起存储,例如在创建哈希时使用的迭代计数和 PRF(SHA-256、SHA-512) . 就向后兼容性而言,这听起来是个好主意,但我想知道这样做是否有任何缺点。对此的任何见解将不胜感激。
我现在正在研究并在网上寻求帮助后创建一个sha2登录表单,我发现下面这个链接的示例代码非常有用和实用(我希望我是对的!??),唯一我不明白的东西是程序员编写函数并从函数中获取salt值的方式.
http://hungred.com/useful-information/php-better-hashing-password/
define('SALT_LENGTH', 15);
function HashMe($phrase, &$salt = null)
{
$pepper = '!@#$%^&*()_+=-{}][;";/?<>.,';
if ($salt == '')
{
$salt = substr(hash('sha512',uniqid(rand(), true).$pepper.microtime()), 0, SALT_LENGTH);
}
else
{
$salt = substr($salt, 0, SALT_LENGTH);
}
return hash('sha512',$salt . $pepper . $phrase);
}
Run Code Online (Sandbox Code Playgroud)
如果我将功能更改为此有什么区别?
function HashMe($phrase, $salt) {..}
Run Code Online (Sandbox Code Playgroud)
当然这个功能会失败,在$ salt之前有一个'&'是什么?是否有必要像这样'null'&$ salt = null?如果我把'&$ salt'怎么办?
然后,为了获得salt值,你可以直接得到它并将它放在如下的sql查询中,
$username = cleanMe($_POST('username'));
$password = cleanMe($_POST('password'));
$salt = '';
$hashed_password = HashMe($password, $salt);
$sqlquery = 'INSERT INTO `usertable` ("username", "password", "salt") VALUES ("'.$username.'", "'.$hashed_password .'", "'.$salt.'") WHERE 1'; …Run Code Online (Sandbox Code Playgroud) 我正在使用 MySql 5.5.32 并尝试在业务层中的存储过程中重现一些代码,以便我可以为使用sql. 虽然 SHA2 函数似乎有问题,但也许我遗漏了一些东西:
SELECT length(SHA2("bob", 512))
Run Code Online (Sandbox Code Playgroud)
返回128,不应该是64吗?
SELECT length(SHA2("bob", 256))
Run Code Online (Sandbox Code Playgroud)
它返回 64,所以看起来要么是我遗漏了什么,要么是 SHA2 中存在错误。有任何想法吗?
我对SHA-2和SHA-256之间的区别感到有点困惑,经常听到它们互换使用.我认为SHA-2是哈希算法的"族",而SHA-256是该族中的特定算法.任何人都可以清除混乱.
当我通过以下代码重现 SHA2 哈希时:
MessageDigest digest = MessageDigest.getInstance("SHA-256");
digest.digest("A".getBytes("UTF-8"));
Run Code Online (Sandbox Code Playgroud)
它给了我一个字节数组,即: 85,-102,-22,-48,-126,100,-43,121,93,57,9,113,-116,-35,5,-85,-44,-107,114, -24,79,-27,85,-112,-18,-13,26,-120,-96,-113,-33,-3
但是当我通过 MySQL 重现相同的哈希时,它给了我一个字符串:5cfe2cddbb9940fb4d8505e25ea77e763a0077693dbb01b1a6aa94f2
如何转换 Java 的结果以便与 MySQL 的结果进行比较?