# informat.codec 编码解码

## 概述

使用`informat.codec`执行编码解码签名等功能。

## hash

获取str的散列值

```javascript
informat.codec.hash(str, method)
```

| 参数     | 类型     | 描述                                                          |
|--------|--------|-------------------------------------------------------------|
| str    | `String` | 要计算散列值的字符串                                                  |
| method | `String` | 散列函数，可选的方法有`md5`,`sha1`,`sha256`,`sha224`,`sha384`,`sha512` |

**返回值**

类型`String`，返回str的散列值

**示例**

::: code-group

```javascript [调用]
informat.codec.hash('hello informat', 'md5');
console.log(md5Result);
```

```text [返回值]
6de76e2f68123fd1a06b86a5dabca022
```
:::

## base64Encode

获取str的base64编码

```javascript
informat.codec.base64Encode(str)
```

| 参数  | 类型     | 描述      |
|-----|--------|---------|
| str | `String` | 要查询的字符串 |

**返回值**

类型`String`，返回str的base64值

**示例**

::: code-group

```javascript [调用]
informat.codec.base64Encode('hello informat');
```

```text [返回值]
aGVsbG8gaW5mb3JtYXQ=
```
:::

## base64EncodeToBytes

获取str的base64编码

```javascript
informat.codec.base64EncodeToBytes(str)
```

| 参数  | 类型     | 描述      |
|-----|--------|---------|
| str | `String` | 要查询的字符串 |

**返回值**

类型`Array<Byte>`，返回str的base64值

**示例**

::: code-group

```javascript [调用]
informat.codec.base64EncodeToBytes('hello informat');
```

```text [返回值]
"YUdWc2JHOGdhVzVtYjNKdFlYUT0="
```
:::

## base64Decode

返回base64解码后的字节数组

```javascript
informat.codec.base64Decode(str)
```

| 参数  | 类型     | 描述           |
|-----|--------|--------------|
| str | `String` | base64编码的字符串 |

**返回值**

类型为 `Array<Byte>`，返回str的通过base64解码后的值

**示例**

::: code-group

```javascript [调用]
informat.codec.base64Decode('aGVsbG8gaW5mb3JtYXQ=');
```
```text [返回值]
'aGVsbG8gaW5mb3JtYXQ='
```
:::

## base64DecodeToString

返回base64解码后的字符串

```javascript
informat.codec.base64DecodeToString(str)
```

| 参数  | 类型     | 描述           |
|-----|--------|--------------|
| str | `String` | base64编码的字符串 |

**返回值**

类型为 `String`，返回str的通过base64解码后的字符串

**示例**

::: code-group

```javascript [调用]
informat.codec.base64DecodeToString('aGVsbG8gaW5mb3JtYXQ=');
```

```text [返回值]
'hello informat'
```
:::

## base64DecodeFromBytes

返回base64解码后的字节数组

```javascript
informat.codec.base64DecodeFromBytes(bytes)
```

| 参数  | 类型     | 描述           |
|-----|--------|--------------|
| bytes | `Array<Byte>` | base64编码的字节数组 |

**返回值**

类型为 `Array<Byte>`，返回通过base64解码后的值

**示例**

::: code-group

```javascript [调用]
const encode = informat.codec.base64EncodeToBytes('hello informat');
const decode = informat.codec.base64DecodeFromBytes(encode);
```

```text [返回值]
aGVsbG8gaW5mb3JtYXQ=
```
:::

## sign

使用签名算法对字符串进行签名

```javascript
informat.codec.sign(str, method, privateKey)
```

| 参数         | 类型     | 描述         |
|------------|--------|------------|
| str        | `String` | 要计算签名的字符串  |
| method     | `String` | 签名方法       |
| privateKey | `String` | 签名使用的RSA私钥 |

::: info 签名方法支持的类型:
- MD2withRSA
- MD5withRSA
- SHA1withRSA
- SHA224withRSA
- SHA256withRSA
- SHA384withRSA
- SHA512withRSA
- MD5andSHA1withRSA
:::

**返回值**

类型`String`，返回str的签名结果


**示例**

::: code-group

```javascript [调用]
const privateKey = ` `;
const signResult = informat.codec.sign('hello world', 'SHA256withRSA', privateKey);
```

```text [返回值]
SxWsYRAnMrmKWRW5jEIsI0HiWEXc5Ed6iVC6CZH/t5nCFMu5hRDeJkJW9bpL1SDVJcvMDqKQ9lVuIDutcnote2rU7yxAiOr0pgmBDLjrzPY5eXnsYow/yPL5s8ujhmzrkC9mbjR9tumPHzG2PWqTXX6cxuQ5NjzPqqduDEs0w/g=
```
:::

## rsaEncryptHexByPrivateKey

RSA私钥加密(返回十六进制字符串)（通常用于签名）

```javascript
informat.codec.rsaEncryptHexByPrivateKey(data, privateKey)
```

| 参数  | 类型     | 描述      |
|-----|--------|---------|
| data | `String` | 数据 |
| privateKey | `String` | 私钥 |

**返回值**

类型`String`，返回data的RSA加密的值


## rsaEncryptBase64ByPrivateKey

RSA私钥加密(返回编码为Base64字符串)（通常用于签名）

```javascript
informat.codec.rsaEncryptBase64ByPrivateKey(data, privateKey)
```

| 参数  | 类型     | 描述      |
|-----|--------|---------|
| data | `String` | 数据 |
| privateKey | `String` | 私钥 |

**返回值**

类型`String`，返回data的RSA加密的值


## rsaEncryptHexByPublicKey

RSA公钥加密(返回十六进制字符串)（用于数据保护）

```javascript
informat.codec.rsaEncryptHexByPublicKey(data, publicKey)
```

| 参数  | 类型     | 描述      |
|-----|--------|---------|
| data | `String` | 数据 |
| publicKey | `String` | 公钥 |

**返回值**

类型`String`，返回data的RSA加密的值


## rsaEncryptBase64ByPublicKey

RSA公钥加密(返回编码为Base64字符串)（用于数据保护）

```javascript
informat.codec.rsaEncryptBase64ByPublicKey(data, publicKey)
```

| 参数  | 类型     | 描述      |
|-----|--------|---------|
| data | `String` | 数据 |
| publicKey | `String` | 公钥 |

**返回值**

类型`String`，返回data的RSA加密的值


## rsaDecryptByPublicKey

RSA公钥解密（通常用于验证签名）

```javascript
informat.codec.rsaDecryptByPublicKey(data, publicKey)
```

| 参数  | 类型     | 描述      |
|-----|--------|---------|
| data | `String` | 加密数据 |
| publicKey | `String` | 公钥 |

**返回值**

类型`String`，返回加密数据data的RSA解密的值


## rsaDecryptByPrivateKey

RSA私钥解密

```javascript
informat.codec.rsaDecryptByPrivateKey(data, privateKey)
```

| 参数  | 类型     | 描述      |
|-----|--------|---------|
| data | `String` | 加密数据 |
| privateKey | `String` | 私钥 |

**返回值**

类型`String`，返回加密数据data的RSA解密的值

## generateRSAKey

生成 RSA 密钥对（包含公钥和私钥）

```javascript
informat.codec.generateRSAKey()
```


**返回值**

类型Map<String, String>，返回包含公钥和私钥的映射对象


```js
const keyPair = informat.codec.generateRSAKey();
console.log('公钥:', keyPair.publicKeyBase64);
console.log('私钥:', keyPair.privateKeyBase64);
```

## tripleDESEncrypt
3DES加密
```javascript
informat.codec.tripleDESEncrypt(data, base64Key)
```
| 参数  | 类型     | 描述      |
|-----|--------|---------|
| data | `String` | 待加密数据 |
| base64Key | `String` | Base64编码的密钥 |
**返回值**
类型`String`，返回数据data经过3DES加密后的值

## tripleDESDecrypt
3DES解密
```javascript
informat.codec.tripleDESDecrypt(base64Data, base64Key)
```
| 参数  | 类型     | 描述      |
|-----|--------|---------|
| base64Data | `String` | Base64编码的加密数据 |
| base64Key | `String` | Base64编码的密钥 |
**返回值**
类型`String`，返回加密数据base64Data经过3DES解密后的值