Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Encryption 在文件中生成三重DES密钥,并使用它加密消息_Encryption_Command Line_Openssl_Des - Fatal编程技术网

Encryption 在文件中生成三重DES密钥,并使用它加密消息

Encryption 在文件中生成三重DES密钥,并使用它加密消息,encryption,command-line,openssl,des,Encryption,Command Line,Openssl,Des,我正在学习密码学,我想使用OpenSSL命令行生成一个用base64编码的三重DES密钥,并将生成的密钥保存到一个文本文件中,然后我想使用这个密钥文件加密一条文本消息 我使用标准命令“rand”生成一个大小为24字节的随机值,用base64编码,并将其保存为文本文件中的密钥,但我不知道如何使用此文件使用命令“enc”加密文本消息,我想知道是否有更好的方法使用OpenSSL命令行生成三重DES密钥 这不是一个编程或开发问题,也不是真正的本体论问题。它更适合security.SX或超级用户 如果这不

我正在学习密码学,我想使用OpenSSL命令行生成一个用base64编码的三重DES密钥,并将生成的密钥保存到一个文本文件中,然后我想使用这个密钥文件加密一条文本消息

我使用标准命令“rand”生成一个大小为24字节的随机值,用base64编码,并将其保存为文本文件中的密钥,但我不知道如何使用此文件使用命令“enc”加密文本消息,我想知道是否有更好的方法使用OpenSSL命令行生成三重DES密钥

  • 这不是一个编程或开发问题,也不是真正的本体论问题。它更适合security.SX或超级用户

  • 如果这不是一次性测试,那么在文件中以明文形式保存密钥可能是不安全的。这部分真的属于security.SX

  • 从技术上讲,三重DES密钥(就像过时之前的一个DES密钥)应该将每个八位字节的低位(在现代系统中,字节)设置为奇数奇偶校验。在70年代,当DES被开发并通常在使用分立晶体管的专用硬件中实现时,这是一个非常重要的特性。在过去几十年中,特别是对于软件,这些奇偶校验位通常被忽略。特别是对于OpenSSL,libcrypto默认情况下会忽略它们(尽管有一个设置或检查选项),commandline
    enc
    使用libcrypto默认值

  • Commandine
    enc
    默认为基于密码的加密,该加密从提供的密码派生密钥,但可以使用十六进制的
    -K
    (大写)获取实际密钥;请参阅手册页

  • 在Unix上,如果改用
    rand-hex
    ,这将很容易:

        openssl rand -hex 24 >key.hex
        openssl enc -des-ede3-cbc -K $(cat key.hex) -iv 0123456789ABCDEF -in X -out Y
        # see below
    
    在Windows上,这也是可管理的,但不是那么容易;你需要像这样的东西

        openssl rand -hex 24 >key.hex
        for /f %t in ('type key.hex') do set k=%t
        rem double the % if used in a batch file
        openssl enc -des-ede3-cbc -K %k% -iv 0123456789ABCDEF -in X -out Y 
        rem ditto
    
    如果坚持使用base64,则需要Unix上的帮助程序

        openssl rand -base64 24 >key.b64
        K=$( openssl base64 -d <key.b64 | xxd -p )
        openssl enc -des-ede3-cbc -K $K ... # as above
    
    openssl rand-base64 24>key.b64
    K=$(openssl base64-d