
# 存证管理
完成企业认证后，即可开通可信存证管理功能。
#### 前提条件
- 已获取管理控制台的登录账号与密码。
- 提前准备好存证文件，通过控制台上传时，文件大小不能超过20MB；大于20MB，请在本地实现文件加密，然后上传对应哈希。
 
#### 购买套餐包
1. 登录DAC管理控制台，在页面左上方选择区域。
2. 在左侧导航栏共享版下方，单击"可信存证 \> 总览"，进入"总览"页面。
3. 在"总览"页面，单击页面右上角的"购买套餐包"。
4. 在配置参数页面，选择套餐包规格。 
   ![](https://support.huaweicloud.com/usermanual-dac/zh-cn_image_0000001512032186.png)
   表1参数说明 
   | 参数    | 说明                                                                                                                                                                                                                                                                                                                                  |
   |:---|:---|
   | 类型    | 可信存证                                                                                                                                                                                                                                                                                                                                |
   | 购买对象  | 套餐包                                                                                                                                                                                                                                                                                                                                 |
   | 套餐包规格 | 支持四种规格：100次、1万次、10万次、50万次。                                                                                                                                                                                                                                                                                                          |
   | 有效周期  | - 当套餐包规格选择100次时，默认为1月，无法修改。  - 当套餐包规格选择1万次、10万次、50万次时，默认为1年，无法修改。                                                              |
   | 购买数量  | 购买套餐包个数，取值为1到999之间的整数。 说明： - 套餐包购买后不支持退款。  - 套餐包在生效期内，先扣除已购买套餐包内的额度，超出部分按当月累计使用量进行按需计费。   |
      
   
   
5. 单击"立即购买"。 
   确认基本信息无误后，请仔细阅读并勾选"我已阅读并同意《华为云用户协议》、《免责声明》和《华为云数字资产链服务协议》"。
   
   
6. 单击"去支付"。支付成功后可在"费用与成本 \> 我的套餐 \> 资源包"页面的资源包列表中查看新购买的套餐包。详情请参见[资源包](https://support.huaweicloud.com/usermanual-billing/package_topic_000001.html)。
7. （可选）单击左侧导航栏的"套餐包管理"，即可查看可信存证套餐包使用情况，详细操作请参考[查看套餐包](https://support.huaweicloud.com/usermanual-dac/dac_usermanual_02029.html)。
 
#### 新增存证
1. 单击左侧导航栏的"可信存证 \> 存证管理"，进入"存证管理"页面。
2. 单击"新增存证"。
3. 在新增存证页面，选择普通存证的类型，添加文件，自定义存证名称。 
   ![](https://support.huaweicloud.com/usermanual-dac/zh-cn_image_0000001563435577.png)
   ![](https://support.huaweicloud.com/usermanual-dac/public_sys-resources/note_3.0-zh-cn.png)
   目前仅支持普通存证。
   
   
4. 单击"确定"。添加成功后，存证管理页面会显示一条存证记录，可以查看证据指纹和证据ID等信息。 
   ![](https://support.huaweicloud.com/usermanual-dac/zh-cn_image_0000001512357366.png)
   
   
5. 在存证管理页面可以查看添加成功后存证名称，存证类型，证据指纹，存证ID，存证时间。
6. 单击对应存证操作列的"查看证书"即可查看和下载华为云区块链BCS签发的证书。 
   ![](https://support.huaweicloud.com/usermanual-dac/zh-cn_image_0000001512199218.png)
   
   
 
 #### 哈希生成
可信存证服务后端只做简单的哈希上链。请您将上链的文件哈希提前生成。哈希值请采用国密SM3算法。如果您在需要在代码中集成，可参考该算法的开源库实现。
- go语言的简单示例如下：
  ```
  // go.mod依赖
  require github.com/tjfoc/gmsm v1.4.1
  ```
  ```
  // 示例代码
  package main
  import (
     "fmt"
     "github.com/tjfoc/gmsm/sm3"
  )
  func main() {
     data := "test"
     h := sm3.New()
     h.Write([]byte(data))
     sum := h.Sum(nil)
     fmt.Printf("%x\n", sum)
  }
  输出
  55e12e91650d2fec56ec74e1d3e4ddbfce2ef3a65890c2a19ecf88a307e76a23
  ```
  

- java语言的简单示例如下：
  ```
  // maven依赖
  <dependency>
      <groupId>org.bouncycastle</groupId>
      <artifactId>bcprov-jdk18on</artifactId>
      <version>1.72</version>
  </dependency>
  ```
  ```
  // 示例代码
  package sm3;
  import org.bouncycastle.crypto.digests.SM3Digest;
  import org.bouncycastle.pqc.legacy.math.linearalgebra.ByteUtils;
  public class demo {
      public static void main(String[] args) {
          byte[] srcData = "test".getBytes();
          SM3Digest digest = new SM3Digest();
          digest.update(srcData, 0, srcData.length);
          byte[] hash = new byte[digest.getDigestSize()];
          digest.doFinal(hash, 0);
          System.out.println(ByteUtils.toHexString(hash));
      }
  }
  输出
  55e12e91650d2fec56ec74e1d3e4ddbfce2ef3a65890c2a19ecf88a307e76a23
  ```
  
 
