如何在shell中加密和解密字符串/文本(linux环境)

Posted

技术标签:

【中文标题】如何在shell中加密和解密字符串/文本(linux环境)【英文标题】:How to encrypt and decrypt a string/text in shell (linux environment) 【发布时间】:2016-02-16 12:37:13 【问题描述】:

我有一个字符串,实际上是密码。我想加密字符串并将加密结果存储在参数文件中。接下来,在执行脚本期间,将拾取加密的字符串,并在运行时将其解密。所以我想知道如何在linux环境下对字符串/文本进行加解密?

【问题讨论】:

见***.com/questions/16056135/…? 唯一担心的是它在加密和解密期间要求输入密码,这是我不想要的。我们可以少设置一下这个密码吗 【参考方案1】:

这不是这里所要求的,但它显示了一种无需密码提示的简单方法

encode.sh

#!/usr/bin/env bash

echo $1 | openssl aes-256-cbc -a -salt -pass pass:somepassword

decode.sh

#!/usr/bin/env bash

echo $1 | openssl aes-256-cbc -d -a -pass pass:somepassword

使文件可执行

chmod +x encode.sh decode.sh

编码示例

./encode.sh "this is my test string"
# => U2FsdGVkX18fjSHGEzTXU08q+GG2I4xrV+GGtfDLg+T3vxpllUc/IHnRWLgoUl9q

解码示例

./decode.sh U2FsdGVkX18fjSHGEzTXU08q+GG2I4xrV+GGtfDLg+T3vxpllUc/IHnRWLgoUl9q
# => this is my test string

【讨论】:

为每个添加 -pbkdf2 标志可能会很好【参考方案2】:

openssl 可以做得更好。

编码:

$ secret=$(echo "this is a secret." | openssl enc -e -des3 -base64 -pass pass:mypasswd -pbkdf2)

解码:

$ echo "$secret" | openssl enc -d -des3 -base64 -pass pass:mypasswd -pbkdf2

提示:

您可以根据提示删除arg -pass并输入密码。

【讨论】:

【参考方案3】:

您可以使用'base64'命令来加密和解密字符串 例如

$ echo "mypassword" |base64 > env.conf

对于提取,您可以执行以下操作

$ MyPass=`cat $PRG_HOME/env.conf | base64 --decode`

希望对你有帮助

【讨论】:

这不是加密 - 充其量只是混淆。没有保护数据解码的秘密/密钥。 加密和编码是两个不同的用例,加密关乎数据安全,编码关乎数据传输,这里使用base64对数据进行编码,这是传输二进制数据的最佳方式之一

以上是关于如何在shell中加密和解密字符串/文本(linux环境)的主要内容,如果未能解决你的问题,请参考以下文章

shell整理(38)===凯撒加密和解密

使用 OpenSSL ECC 加密/解密文本字符串

如何修改我的代码,以便在加密之前和解密之后输出相同的文本?

使用rust的openssl库加密/解密大文本

如何用C语言对文件进行加密和解密?急求......................

通过ios实现RSA加密和解密