AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1458249
Accepted
yog raj
yog raj
Asked: 2019-07-11 06:06:58 +0800 CST2019-07-11 06:06:58 +0800 CST 2019-07-11 06:06:58 +0800 CST

如何解密“openssl rand -base64 20”生成的密码

  • 772

我需要生成多个随机密码,并遇到了内置 base64 编码的“openssl rand -base64 14”命令。

sh-3.2# openssl rand -base64 14
ktMgWKno9AbvRUq4wx0=

但是,一旦生成,我想将密码解密为可用/人类可读的格式。但是,在解码时,我只看到不可读的值。

sh-3.2# echo ktMgWKno9AbvRUq4wx0= | base64 --decode
�� X����EJ��sh-3.2#

你们如何解密这些并使用?

linux passwords
  • 1 1 个回答
  • 4046 Views

1 个回答

  • Voted
  1. Best Answer
    Kamil Maciorowski
    2019-07-11T12:50:30+08:002019-07-11T12:50:30+08:00

    tl;博士

    在您遇到的方法中,格式ktMgWKno9AbvRUq4wx0=是人类可读的;这正是您所需要的。


    详细解答

    将密码解密为可用/人类可读的格式。

    一个误会。它的两个部分:

    1. openssl rand生成伪随机字节。不能保证它们将是可打印的或人类可读的。
    2. Base64 编码的全部意义在于将任意二进制数据表示为文本(因此它可以跨仅可靠地支持文本内容的通道传输)。碰巧文本是可打印的和人类可读的。

    因此,您要求(通常)编码为文本的二进制数据。ktMgWKno9AbvRUq4wx0=是人类可读的形式。您“解密”(或更确切地说“解码”;Base64 是一种编码,而不是加密)的命令是有效的,但它为您提供了该工具在没有-base64.

    您可以使用openssl rand -base64 14给您的密码作为人类可读的密码。我想这就是您遇到的解决方案的要点。每个字符都ktMgWKno9AbvRUq4wx0=携带原始二进制序列的 6 位熵,除了之前=的那个和它=本身:0=序列携带 4 位。总共你有 18×6+4 位的熵,这正是你要求的 14×8。整个字符串的长度为 20 个字符。为了最大化(在方法内)存储在 20 个字符中的熵,您应该至少需要 20x6 位并取前 20 个字符。20x6 正好是 15x8,所以这个命令

    openssl rand -base64 15
    

    将准确生成您需要的 20 个字符(无需截断)。这将是一个人类可读的字符串,其长度与所讨论的字符串相同,但其中的熵多了 8 位。

    我说“方法内最大化”是因为“方法外”可以为每个人类可读字符打包更多的熵。如果您允许使用不属于 Base64 字符集的其他字符(例如%, _, #),那么每个字符将获得超过 6 位。

    你不能用额外的字符扩展方法,因为“每个字符 6 位”就像 Base64 的基础。要获得每个角色更多的熵,您需要一种完全不同的方法。使用所有 95 个可打印 ASCII 字符的方法将为每个字符提供大约 6.5 位的熵(严格来说:log 2  95)。

    • 5

相关问题

  • 如何让我的 Linux 机器看起来像是在运行 Windows?

  • 对于 cp 或 mv,是否有等同于 cd - 的东西?

  • 以 root 身份运行 docker 容器

  • 如何在域和 Linux 活动目录中启用指纹传感器

  • 如何在CentOS 7 中将Ctrl+C 永久更改为Ctrl+K?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    Windows 10 服务称为 AarSvc_70f961。它是什么,我该如何禁用它?

    • 2 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Marko Smith

    ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:无法获取本地颁发者证书 (_ssl.c:1056)

    • 4 个回答
  • Marko Smith

    我如何知道 Windows 安装在哪个驱动器上?

    • 6 个回答
  • Martin Hope
    Albin 支持结束后如何激活 WindowsXP? 2019-11-18 03:50:17 +0800 CST
  • Martin Hope
    fixer1234 “HTTPS Everywhere”仍然相关吗? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    Kagaratsch Windows 10 删除大量小文件的速度非常慢。有什么办法可以加快速度吗? 2019-09-23 06:05:43 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    Inter Sys Ctrl+C 和 Ctrl+V 是如何工作的? 2019-05-15 02:51:21 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve