gpt4 book ai didi

encryption - OpenSSL 字符串解密问题

转载 作者:行者123 更新时间:2023-12-03 13:51:46 26 4
gpt4 key购买 nike

我会尽量使这个简洁。

我希望能够使用我以前做过的 OpenSSL 加密和解密简单的字符串。

但是,必须满足以下条件:

  • 简单的密码使用(无 key )
  • 没有输入/输出文件
  • 不提示输入密码(通过命令行选项指定任一方向)

  • 我有 50% 在那里。我可以通过以下方式成功执行加密:
    echo 'someTextIWantToEncrypt' | openssl enc -e -aes-256-cbc -nosalt -pass pass:mySecretPass

    输出结果为:
    (??b}n??v???>??G??.?B??~?

    好的,不错。现在我想解密那个字符串。所以我这样做:
    echo -n '(??b}n??v???>??G??.?B??~?' | openssl enc -d -aes-256-cbc -pass pass:mySecretPass

    甚至作为替代方案:
    openssl enc -d -aes-256-cbc -pass pass:mySecretPass <<< '(??b}n??v???>??G??.?B??~?'

    但我得到了这样的回应:
    bad magic number

    虽然我不想使用输入/输出文件,但该方法确实 100% 有效:
    # encrypt to file
    echo -n 'someTextIWantToEncrypt' | openssl enc -e -nosalt -out test.txt -aes-256-cbc -pass pass:mySecretPass

    # decrypt from file
    openssl enc -d -nosalt -in test.txt -aes-256-cbc -pass pass:mySecretPass

    # result of decryption (is successful):
    someTextIWantToEncrypt

    那么……如何才能实现上面的解密过程 没有 使用输入/输出文件?我觉得我很接近,但缺少一些小细节。

    提前致谢。

    最佳答案

    问题是加密使用了整个 ASCII 字符集,包括不可打印的字符。如果您希望能够剪切和粘贴加密数据,则需要将其转换为仅可打印的字符。您可以使用 -base64 (或 -a )选项:

    echo 'someTextIWantToEncrypt' | \
    openssl enc -base64 -e -aes-256-cbc -nosalt -pass pass:mySecretPass

    KPkBkGJ9bs4YHvh24xz7m9jTlYWm1LcIFcWR0DwY4PU=

    然后用同样的方法解密:
    echo "KPkBkGJ9bs4YHvh24xz7m9jTlYWm1LcIFcWR0DwY4PU=" | \
    openssl enc -base64 -d -aes-256-cbc -nosalt -pass pass:mySecretPass

    警告:如果您使用的是 openssl,我只能假设数据的 secret 性,因此密码对您很重要。如果是这种情况,您应该 永远不要在命令行上提供密码,因为它可以暴露给任何有权运行 ps 的人。 .

    更好的解决方案是将密码存储在环境变量中并让 openssl 从那里读取它:
    export passwd="mySecretPass"
    echo "KPkBkGJ9bs4YHvh24xz7m9jTlYWm1LcIFcWR0DwY4PU=" | \
    openssl enc -base64 -d -aes-256-cbc -nosalt -pass env:passwd

    关于encryption - OpenSSL 字符串解密问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17117687/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com