代码托管 CODEARTS REPO-加密传输与存储:在Windows中使用密钥对方式进行加密、解密

时间:2024-09-27 18:09:05

在Windows中使用密钥对方式进行加密、解密

  1. 安装并初始化Git。
  2. 下载最新基于Windows的git-crypt,将下载到的exe文件放到Git安装目录下的“cmd”文件夹中,下图以“Windows Server 2012 R2 标准版 64”的默认Git Bash安路径为例。

    放进文件夹即可,不需要运行此exe。

  3. 生成密钥对

    1. 打开“Git Bash”,并进入本地仓库(如下图1)。
    2. 生成密钥对,输入指令如下(如下图2):
      git-crypt init
    3. 将密钥文件导出,本示例中将密钥文件导出到C:\test目录并名为KeyFile,输入指令如下(如下图3):
      git-crypt export-key /c/test/keyfile

    4. 执行完以上步骤,可以到密钥导出的文件路径,验证下是否生成了密钥,在本示例中到C:\test路径下验证是否有KeyFile文件,如下图所示。

      持有这个密钥文件的计算机,可以解密对应的加密文件。

  4. 为仓库配置加密范围

    1. 在仓库的根目录下新建一个名为.gitattributes的文件。
    2. 打开.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文件,这样配置会无效。

  5. 进行文件加密

    仓库根目录打开Git bash,执行如下指令即可完成加密,并会看到目前文件的加密状态。

    git-crypt status

    加密执行后,在您的本地仓库仍能明文方式打开和编辑这些加密文件,这是因为您本地仓库有密钥存在。

    这时你可以使用add 、commit、push组合将仓库推送到代码托管仓库,此时加密文件将一同被推送。

    加密文件在代码托管仓库中将以加密二进制方式存储,无法直接查看。如果没有密钥,就算将其下载到本地,也无法解密。

    “git-crypt status”只会加密本次待提交的文件,对本次未发生修改的历史文件不会产生加密作用,Git会对此设定涉及的未加密文件做出提示(见上图中的Warning),如果想将仓库中的对应类型文件全部加密,请使用“git-crypt status -f”

    在让团队合作中 -f (强制执行)具有一定的风险,可能会对合作伙伴的工作产生不变,请谨慎使用。

  6. 进行文件解密

    1. 确认本机器Git安装路径下存在git-crypt文件。

    2. 将仓库从代码托管克隆到本地。
    3. 获取加密此仓库的密钥文件,并存储于本地计算机。

    4. 进入仓库目录,右键打开Git bash。
    5. 执行解密指令,执行后无回显,则为执行成功。
      git-crypt unlock /C/test/KeyFile     #请将 /C/test/KeyFile 更换为您实际的密钥存储路径

support.huaweicloud.com/usermanual-codeartsrepo/codeartsrepo_03_0091.html