代码托管 CODEARTS REPO-在Git客户端使用git-crypt传输敏感数据:在Windows中使用密钥对方式进行加密、解密
在Windows中使用密钥对方式进行加密、解密
- 下载并安装最新的Windows Git客户端,下载最新基于Windows的git-crypt,把下载到的exe文件放到Git安装目录下的“cmd”文件夹中。
- 执行如下命令,在本地生成密钥对。
- 打开“Git Bash”,并进入本地代码仓库。
- 执行如下命令,在Git代码仓库中创建“.git-crypt”文件夹,文件夹包含加密文件所需的密钥和配置文件。
git-crypt init
- 执行如下命令,把密钥文件导出到C:/test目录并命名为KeyFile。
git-crypt export-key /c/test/keyfile
- 执行完上述步骤,您可以到密钥导出的文件路径进行验证,确认是否已成功生成密钥。持有这个密钥文件的计算机,可以解密对应的加密文件。
- 执行如下命令,为代码仓库配置加密范围。
- 在仓库的根目录下新建一个名为“.gitattributes”的文件。
- 打开“.gitattributes”文件,设置加密范围,语法如下。
文件名或文件范围 filter=git-crypt diff=git-crypt
下面给出四个示例。FT/file01.txt filter=git-crypt diff=git-crypt #将特定文件加密,这里加密的是FT文件夹下的file01.txt *.java filter=git-crypt diff=git-crypt #将 .java类型文件加密 G* filter=git-crypt diff=git-crypt #将 文件名为 G 开头的文件加密 ForTest/** filter=git-crypt diff=git-crypt #将 ForTest 文件夹下的文件加密
- 如果创建.gitattributes文件时提示“必须键入文件名”,可以将文件名填写成 “.gitattributes.”即可创建成功,如果使用Linux指令创建文件,则不会出现此问题。
- 注意不要将.gitattributes保存成txt文件,否则配置会无效。
- 进行文件加密。
在仓库根目录打开Git bash,执行如下指令即可完成加密,加密后可看到目前文件的加密状态。
git-crypt status
加密执行后,在您的本地仓库仍能明文方式打开和编辑这些加密文件,这是因为您本地仓库有密钥存在。
这时您可以使用add 、commit、push组合将仓库推送到代码托管仓库,此时加密文件将一同被推送。
加密文件在代码托管仓库中将以加密二进制方式存储,无法直接查看。如果没有密钥,就算将其下载到本地,也无法解密。
“git-crypt status”只会加密本次待提交的文件,对本次未发生修改的历史文件不会产生加密作用,Git会对此设定涉及的未加密文件做出提示(见上图中的Warning),如果想将仓库中的对应类型文件全部加密,请使用“git-crypt status -f”。
在让团队合作中 -f (强制执行)具有一定的风险,请谨慎使用。
- 进行文件解密。