钱包地址格式约定
- TRON 钱包地址对字母的 大小写敏感。
- ETH 钱包地址使用 小写 字母。
属性名 | Required/Optional | 型态 | 描述 |
---|
Content-Type | Required | String | multipart/form-data |
X-API-KEY | Required | String | 由平台方分配的 API-KEY |
API 格式约定
所有请求参数必须以 form-data 的形式构建,使用 RSA 公钥 加密,并以 Base64 编码 的形式提交。加密后的数据应作为 data 参数提交。
同时,响应的 data 参数也是加密的,开发者需要解密后才能获取明文内容。
请求格式
Content-Disposition: form-data; name="data"
U2FsdGVkX1+... (加密后的数据)
加密过程
- 使用平台提供的 RSA 公钥 对请求参数进行加密。
- 加密后的数据需进行 Base64 编码,并作为 data 参数提交。
解密过程
- 平台接收到加密的 data 参数后,会使用对应的私钥进行解密。
- 返回的响应 data 参数同样是加密后的,开发者需使用公钥解密以获得明文。
Java 加密代码示例
以下是使用 RSA 公钥 对数据加密的代码示例:
import javax.crypto.Cipher;
import java.io.ByteArrayOutputStream;
import java.security.KeyFactory;
import java.security.PublicKey;
import java.security.spec.X509EncodedKeySpec;
import java.util.Base64;
public class RSAEncrypt {
public static String encryptByPublicKeyForOut(String data, String publicKey) throws Exception {
// 将公钥字符串解码
X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(Base64.getDecoder().decode(publicKey));
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PublicKey publicK = keyFactory.generatePublic(x509EncodedKeySpec);
// 初始化加密器
Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());
cipher.init(Cipher.ENCRYPT_MODE, publicK);
byte[] dataByte = data.getBytes();
int inputLen = dataByte.length;
ByteArrayOutputStream out = new ByteArrayOutputStream();
int offSet = 0;
byte[] cache;
int i = 0;
// 分段加密
while (inputLen - offSet > 0) {
if (inputLen - offSet > 117) {
cache = cipher.doFinal(dataByte, offSet, 117);
} else {
cache = cipher.doFinal(dataByte, offSet, inputLen - offSet);
}
out.write(cache, 0, cache.length);
i++;
offSet = i * 117;
}
byte[] encryptedData = out.toByteArray();
out.close();
// 对加密结果进行 Base64 编码
return Base64.getEncoder().encodeToString(encryptedData);
}
}
Java 解密代码示例
以下是使用 RSA 公钥 对响应数据解密的代码示例:
import javax.crypto.Cipher;
import java.io.ByteArrayOutputStream;
import java.security.KeyFactory;
import java.security.PublicKey;
import java.security.spec.X509EncodedKeySpec;
import java.util.Base64;
public class RSADecrypt {
public static String decryptByPublicKeyForOut(String data, String publicKey) throws Exception {
// 将公钥字符串解码
X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(Base64.getDecoder().decode(publicKey));
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PublicKey publicK = keyFactory.generatePublic(x509EncodedKeySpec);
// 初始化解密器
Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());
cipher.init(Cipher.DECRYPT_MODE, publicK);
byte[] encryptedData = Base64.getDecoder().decode(data);
int inputLen = encryptedData.length;
ByteArrayOutputStream out = new ByteArrayOutputStream();
int offSet = 0;
byte[] cache;
int i = 0;
// 分段解密
while (inputLen - offSet > 0) {
if (inputLen - offSet > 128) {
cache = cipher.doFinal(encryptedData, offSet, 128);
} else {
cache = cipher.doFinal(encryptedData, offSet, inputLen - offSet);
}
out.write(cache, 0, cache.length);
i++;
offSet = i * 128;
}
byte[] decryptedData = out.toByteArray();
out.close();
// 返回解密后的明文
return new String(decryptedData);
}
}
注意事项
支持的代币
代币 | 链类型 | 支持状态 |
---|
| TRC20 | ✅ 已支持 |
| ERC20 | ✅ 已支持 |
| BEP20 | ⏳ 开发中 |
| TRC20 | ✅ 已支持 |
| ERC20 | ✅ 已支持 |
| ERC20 | ✅ 已支持 |
| BEP20 | ⏳ 开发中 |
| ERC20 | ⏳ 开发中 |
| BEP20 | ⏳ 开发中 |
风险评分参考