Linux系统生成共享密钥(PSK)的4种方法

Lasted 2020-02-16 12:58:17

预共享密钥(PSK)也被称为共享秘密是用作加密双方预定义的字符串。也可用于验证 L2TP/IPSec 连接的 Unicode 字符串。可以配置“路由和远程访问”来验证支持预共享密钥的 VPN 连接。

在Linux系统中可以通过命令来生成共享密钥。

1. 使用OpenSSL命令

OpenSSL 是一个开放源代码的软件库包,可以使用这个包来进行安全通信,避免窃听,同时确认另一端连线者的身份。OpenSSL提供了各种加密功能,可使用 rand 参数生成随机字符串,并通过 base64 处理输出共享密钥,入下所示:

openssl rand -base64 32
KrJ5jHHhFCfz0c2X20S9+Nxsypal7IJbMr8wXjjjmcc=
openssl rand -base64 64
xCeIPbrkrNh7ZzAmaQB7KMQoXGbX7sOYE/pmjGvjxKf2Bxf628/YqBJfSHdN0UjU
B84a4cuII7UvocYM1twFvw==

2. 使用GPG命令

GPG 是 OpenPGP 提供数字加密和签名服务的命令行工具。可以使用其 --gen-random 选项来生成强大的 PSK,并通过 base64 编码对其进行处理,如图所示:

gpg --gen-random 1 32 | base64
oiQovAMpxb8maZoyPpsQSY+g4Y1VIy6FQnPCWi4E4zI=
gpg --gen-random 2 70 | base64
jpTFTTMlR3hVeUMTMWGjTWWDTrnt0Dt1Jnr4oaNjv6tuUDbs4KtUvnVKKWb2s+BjOo69FWtlY1hd
FYW8q8Qc17hiHaWt9Q==

其中10、70表示字符串长度。

3. 使用伪随机数生成器

可以使用 Linux 中的任何伪随机数生成器,例如 /dev/random 或 /dev/urandom,如下所示。head 命令的 -c 选项有助于生成字符数。

head -c 35 /dev/random | base64
7cVUCNp+pILocW6E9EuodjM547oMEBFcMdS/TmdKldyjrXc=

4. 使用date和sha245sum命令

可以将 date 和 sha256sum 命令一起使用,创建PSK,如下所示:

date | sha256sum | base64
MDcwMzJlMGE4N2JmOGY1YWZjMTk2YzA5NDZkOTAwM2VhOWFkMTFhMTZhODE4MmVmYWRlOWNkZjA3
Y2Q1NTM1YSAgLQo=
date | sha256sum | base64 | head -c 45; echo
ZTYxM2M1OTQ5Nzc4OWNiYmIzMzVjNTlkNTAyOTVhOTM1N