如何在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环境)的主要内容,如果未能解决你的问题,请参考以下文章