sha1sum输出实际 sha 的十六进制编码格式。我想看到一个 base64 编码的变体。可能有一些命令输出我可以通过管道echo -n "message" | <some command> | base64传输的二进制版本,就像这样:或者如果它直接输出它也很好。
可以使用该rpm -K命令验证 RPM 的加密签名。如果签名在 RPM 的数据库中并且有效,这将返回一个包含gpg(或pgp) 并以 结尾的字符串OK。
如果包未签名但校验和有效,您仍然会得到OK,但不会得到gpg。
如果包已签名但密钥从 RPM 数据库中丢失,您会得到(GPG)(大写字母)和NOT OKAY,后跟(MISSING KEYS: GPG#deadbeef).
如果我想弄清楚我应该找到什么密钥来安装我的包安装工作,这很方便。
但是,如果我想验证RPM 密钥环中的哪些密钥用于对给定的包进行签名,该怎么办?
对于密码学课程,我试图耗尽 Linux 中的熵池(例如,使/proc/sys/kernel/random/entropy_avail转到 0 并阻止从 读取命令/dev/random),但我无法实现它。我应该从/dev/random块中读取数据。如果我执行这两个命令:
watch -n 0.5 cat /proc/sys/kernel/random/entropy_avail
Run Code Online (Sandbox Code Playgroud)
观察熵,然后:
od -d /dev/random
Run Code Online (Sandbox Code Playgroud)
为了转储随机池,watch命令中的值徘徊在 3700 和 3900 之间,并且在我运行此命令时只有一点点增益和损失。我让这两个命令运行大约三分钟, 的大小没有明显的变化entropy_avail。那段时间我并没有在电脑上做太多事情。通过谷歌搜索,我发现也许硬件随机数生成器可能非常好,以至于熵不会下降,但如果我这样做:
cat /sys/devices/virtual/misc/hw_random/rng_available
Run Code Online (Sandbox Code Playgroud)
我什么也没看到,只看到一个空行。所以我有几个问题:
Fedora 使用 GPG 密钥对 RPM 包和 ISO 校验和文件进行签名。他们在网页上列出了正在使用的密钥(包括指纹)。网页通过 https 传送。
例如,校验和文件为Fedora-16-i386-DVD.iso与密钥签名A82BA4B7。检查谁签署了公钥会导致一个令人失望的列表:
键入位/keyID cr。时间过期时间密钥过期 酒吧 4096R/A82BA4B7 2011-07-25 uid 软呢帽 (16) sig sig3 A82BA4B7 2011-07-25 __________ __________ [selfsig]
Fedora 社区中似乎没有人签署过这些重要的密钥!
为什么?;) (为什么 Fedora 不使用信任网络?)或者我错过了什么?
将此与Debian进行比较- 他们当前的自动 ftp 签名密钥473041FA 由 7 个开发人员签名。
编辑:为什么这个东西很重要?
拥有如此重要的密钥由真实的人签名(目前它没有由任何人签名!)建立了一定程度的信心,即它是真实的密钥,而不是由攻击者在 5 分钟前刚刚上传到网络服务器上创建的。这种级别的信心或信任要求您可以在信任网络中追踪签名关系(对您已经信任的人)。当不同的人签署时,您能够这样做的可能性会增加(目前可能性为零)。
您可以将这种信任与浏览https://mybank.example.net并获得认证验证警告进行比较 - 然后您是否仍会输入您的交易详细信息,或者您是否会认为“等一下!”,停止并调查问题?
我是 Alice,我收到了 Bob 的签名电子邮件。
我使用 Web 电子邮件客户端(例如 GMail),我看到附件之一是smime.p7s.
我找到了“显示原始消息”选项并将内容保存到message.orig.
假设 Bob 签署了电子邮件,我如何从命令行验证它?
(让我们假设 Bob 使用由一些受人尊敬的机构签署的认证密钥 - 我不知道是哪个,但我想是)
(Alice 不想安装具有适当功能的电子邮件客户端,只是为了一封邮件)
我对 OpenSSH 很感兴趣,我知道该/etc/ssh目录是用于 ssh 守护进程的,而该~/.ssh目录是用于特定用户的。
两个目录都包含私钥和公钥:
但是这些键之间有什么区别呢?我很困惑,因为我作为用户使用的那些在我的主目录中,在/etc/ssh?
为了验证密码哈希,我们可以使用openssl passwd如下所示的内容并在此处进行解释
openssl passwd $HASHING-ALGORITHM -salt j9T$F31F/jItUvvjOv6IBFNea/ $CLEAR-TEXT-PASSWORD
但是,这仅适用于以下算法:md5、crypt、apr1、aixmd5、SHA-256、SHA-512
如何使用 yescrypt 从 bash 或 python 或 nodeJS 计算 $CLEAR-TEXT-PASSWORD 的哈希密码?
如何在 Linux 下使用 RIPEMD-160 哈希函数从命令行制作文件摘要?
我需要从命令行使用 OpenSSL 执行以下 Java 代码片段:
private byte[] hmacSha256(byte[] key, byte[] payload) throws GeneralSecurityException {
Mac mac = Mac.getInstance("HmacSHA256");
mac.init(new SecretKeySpec(key, "HmacSHA256"));
mac.update(payload);
return mac.doFinal();
}
Run Code Online (Sandbox Code Playgroud)
这些是适用于 Java 但不适用于 OpenSSL 的测试值:
KEY_BASE64="xtztqVgjD+5VHL4rVeKYm0USpDJTEy5Tjc9aK6I/oV0="
KEY_HEX="c6dceda958230fee551cbe2b55e2989b4512a43253132e538dcf5a2ba23fa15d"
PAYLOAD_BASE64="j9F8TrzCabcDoLdHUDaUuv6ea224xikwbPF1IW0OjkY="
DIGEST_HEX="c2ec711448a4f5bb851279eca0a628847254855966ad09de7e734b7df48e198a"
Run Code Online (Sandbox Code Playgroud)
我已经尝试过这个答案,但得到了不同的结果。它看起来像这样:
KEY_BASE64="xtztqVgjD+5VHL4rVeKYm0USpDJTEy5Tjc9aK6I/oV0="
KEY_HEX="c6dceda958230fee551cbe2b55e2989b4512a43253132e538dcf5a2ba23fa15d"
PAYLOAD_BASE64="j9F8TrzCabcDoLdHUDaUuv6ea224xikwbPF1IW0OjkY="
DIGEST_HEX="c2ec711448a4f5bb851279eca0a628847254855966ad09de7e734b7df48e198a"
Run Code Online (Sandbox Code Playgroud)
它确实为我提供了十六进制格式的输出,但该值与我使用相同的负载和键值运行该 Java 代码片段时得到的值不匹配。
我还可以使用另一个命令行工具,只要它在大多数 Linux 默认包管理器列表中广泛可用即可。