通过命令行在Mac上加密和解密文件的简单内置方法?


Answers:


53

openssl 预先安装在Mac OS X上。

您可以使用以下命令:

# encrypt file.txt to file.enc using 256-bit AES in CBC mode
openssl enc -aes-256-cbc -salt -in file.txt -out file.enc

# the same, only the output is base64 encoded for, e.g., e-mail
openssl enc -aes-256-cbc -a -salt -in file.txt -out file.enc

# decrypt binary file.enc
openssl enc -d -aes-256-cbc -in file.enc -out file.txt

# decrypt base64-encoded version
openssl enc -d -aes-256-cbc -a -in file.enc -out file.txt

(复制自OpenSSL命令行指南:如何简单地加密文件?

这些命令使用带有密码块链接(CBC)的256位AES加密,该加密与现在一样安全。


1
您在哪里输入密码?
代码完成时间:2012年

3
一旦执行了上述任何openssl命令,它就会要求您enter aes-256-cbc encryption password
丹尼斯2012年

1
@codecompleting或指定-pass pass:MYSECRETPASSWORD,但密码是那么当然不能从隐藏的ps,等等
阿卡门斯

2
@Wildcard是的,盐(实际上是初始化向量)与密文一起存储在加密文件中。
丹尼斯

1
@KolobCanyon加密永远不会造成损失。根据定义,它要求能够解密密文以恢复原始明文。只是不要忘记钥匙。
丹尼斯

6

我为此构建了一个shell脚本。您可以在Mac或Linux上使用它。

#!/bin/bash
#encrypt files with aes-256-cbc cipher using openssl

#encrypt files
if [ $1 == "-e" ];
then
    if [ -f "$2" ];
    then
    openssl aes-256-cbc -a -e -salt -in "$2" -out "$2.aes"
    else
       echo "This file does not exist!" 
    fi
#decrypt files
elif [ $1 == "-d" ];
then
    if [ -f "$2" ];
    then
        openssl aes-256-cbc -a -d -salt -in "$2" -out "$2.decrypt"
    else
        echo "This file does not exist!" 
    fi
#show help
elif [ $1 == "--help" ];
then
    echo "This software uses openssl for encrypting files with the aes-256-cbc cipher"
    echo "Usage for encrypting: ./encrypt -e [file]"
    echo "Usage for decrypting: ./encrypt -d [file]"
else
    echo "This action does not exist!"
    echo "Use ./encrypt --help to show help."
fi

只需将其保存在问题chmod + x文件中的文本文件中以使其可执行即可。之后,使用./filename --help获取信息。


2
-a不必要的使用将不必要地使输出文件膨胀。
Acumenus 2014年

5

Mac OS X能够创建加密的容器文件(类似于Truecrypt),该文件可以随放置在其中的数据量而增加。使用磁盘工具执行此操作。

在“ 磁盘工具”中,使用稀疏图像格式之一选择“ 文件”»“新建”»“空白磁盘图像”。选择AES-128或AES-256作为加密。


从命令行中,相同的功能是通过所提供的hdiutil程序。


对用于命令行访问的单个文本文件有些夸张,不是吗?以后可以通过Linux等打开文件吗?等吗?
通配符

@Wildcard可能(范围有变化的趋势);不,但这不是问题的一部分。
丹尼尔·贝克

@DanielBeck,输出位与Ans1相同吗?
Pacerier
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.