开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 174|回复: 8
收起左侧

[易语言] JAVA转E语言

[复制链接]
结帖率:74% (43/58)
发表于 6 天前 | 显示全部楼层 |阅读模式   浙江省宁波市
12精币
package cn.hsa.interfaceSignDemo;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.bouncycastle.crypto.RuntimeCryptoException;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.junit.jupiter.api.Test;

import javax.crypto.Mac;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import javax.xml.bind.annotation.adapters.HexBinaryAdapter;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.Security;

/**
* @author hezhiling
* @Version 1.0
* @date 2021-10-19 20:57:41
*/
public class SignGenerator {
    private final static String SECRET = "secret";

    public static String encrytSHA256(String content, String secret) {

        try {
            Security.addProvider(new BouncyCastleProvider());
            SecretKey secretKey = new SecretKeySpec(secret.getBytes("UTF-8"), "HmacSm3");
            Mac mac = Mac.getInstance(secretKey.getAlgorithm());
            mac.init(secretKey);
            byte[] digest = mac.doFinal(content.getBytes("UTF-8"));
            return new HexBinaryAdapter().marshal(digest).toUpperCase();
        } catch (Exception e) {
            throw new RuntimeCryptoException("加密异常");
        }

    }

    @Test
    public void test() {
        JSONObject json = new JSONObject();
        json.put("a", "a");
        long currentTimeMillis = System.currentTimeMillis();
        System.out.println("当前时间戳:" + currentTimeMillis);
        System.out.println("当前报文:" + json.toString());
        System.out.println(currentTimeMillis+ "\n" + json.toString());
        System.out.println(encrytSHA256(currentTimeMillis + "\n" + json.toString(), SECRET));
    }

    @Test
    public void test2() {
        JSONObject json = new JSONObject();
        json.put("infno", "5101");
        json.put("msgid", "63000000000000000000000008");
        json.put("mdtrtarea_admvs", "610602");
        json.put("insuplc_admdvs", "610602");
        json.put("recer_sys_code", "FSI_LOCAL");
        json.put("dev_no", "");
        json.put("dev_safe_info", "");
        json.put("cainfo", "");
        json.put("signtype", "");
        json.put("infver", "1.0");
        json.put("opter_type", "1");
        json.put("opter", "system");
        json.put("opter_name", "测试");
        json.put("inf_time", "2020-12-03 10:00:00");
        json.put("fixmedins_code", "H33010200001");
        json.put("fixmedins_name", "延安致美****");
        json.put("sign_no", "");
        JSONObject input = new JSONObject();
        input.put("hosp_dept_codg", "1");
        json.put("input", input);
        System.out.println(json.toString());
        System.out.println(encrytSHA256("1634710020" + "\n" + json.toString(), SECRET));
    }
}



回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳
结帖率:94% (16/17)

签到天数: 19 天

发表于 6 天前 | 显示全部楼层   河南省郑州市
你倒是把依赖的类发上来
回复

使用道具 举报

结帖率:74% (43/58)

签到天数: 14 天

 楼主| 发表于 6 天前 | 显示全部楼层   浙江省宁波市
java签名

interface-sign-demo.rar

17.63 KB, 下载次数: 1

回复

使用道具 举报

结帖率:74% (43/58)

签到天数: 14 天

 楼主| 发表于 6 天前 | 显示全部楼层   浙江省宁波市
1.3.3Hmac_SM3计算接口
函数:function ZJ_Hmac_SM3(key,secret,unix_timestamp,request_body)
1.3.3.1函数功能说明
生成签名信息接口。
1.3.3.2参数说明
key:统一下发给用户的key(组织机构编码)。
secret:进行Hmac计算时的秘钥secret(4至16位字符串)。
unix_timestamp:GMT时间戳串,传入”0”字符串时按系统时间运算,不为”0”字符串时按传入的值运算。
request_body:报文字符串。
回复

使用道具 举报

签到天数: 20 天

发表于 5 天前 | 显示全部楼层   广东省揭阳市
很明显是国密SM3 易语言直接翻译太累 编译个DLL给易调用还差不多~

回复

使用道具 举报

结帖率:74% (43/58)

签到天数: 14 天

 楼主| 发表于 5 天前 | 显示全部楼层   浙江省宁波市
已经弄好了,无需回复,申请关帖
回复

使用道具 举报

结帖率:100% (5/5)

签到天数: 12 天

发表于 5 天前 | 显示全部楼层   河南省焦作市
要翻译test 还是test2 ?
回复

使用道具 举报

结帖率:100% (1/1)

签到天数: 19 天

发表于 3 天前 | 显示全部楼层   云南省楚雄彝族自治州
.版本 2

.支持库 eHTTP
.支持库 eFile
.支持库 eText

.局部变量 SECRET, 文本型
SECRET = “secret”

.子程序 _启动子程序, 整数型, , 本子程序在程序启动后最先执行
_测试 ()
_测试2 ()

.子程序 encrytSHA256, 文本型, 公开, 加密字符串
.参数 content, 文本型
.参数 secret, 文本型
.局部变量 digest, 字节集
.局部变量 hexDigest, 文本型

digest = 计算HmacSm3 (content, secret)
hexDigest = 字节集转十六进制 (digest)
返回 (大写 (hexDigest))

.子程序 计算HmacSm3, 字节集, 私有, 使用sm3.dll计算HMAC-SM3
.参数 data, 文本型
.参数 key, 文本型
.局部变量 sm3Dll, 整数型
.局部变量 result, 字节集
.局部变量 dataSize, 整数型
.局部变量 keySize, 整数型

dataSize = 取字节集长度 (到字节集 (data))
keySize = 取字节集长度 (到字节集 (key))
sm3Dll = 调用外部DLL (“sm3.dll”, “HmacSm3”, 到字节集 (data), dataSize, 到字节集 (key), keySize, @result)
返回 (result)

.子程序 _测试, 子程序, 公开
.局部变量 json, 文本型
.局部变量 currentTimeMillis, 整数型
.局部变量 sign, 文本型

json = “{‘a’:’a’}”
currentTimeMillis = 取现行时间 ()
调试输出 (“当前时间戳:” + 到文本 (currentTimeMillis))
调试输出 (“当前报文:” + json)
调试输出 (到文本 (currentTimeMillis) + “\n” + json)
sign = encrytSHA256 (到文本 (currentTimeMillis) + “\n” + json, SECRET)
调试输出 (sign)

.子程序 _测试2, 子程序, 公开
.局部变量 json, 文本型
.局部变量 inputJson, 文本型
.局部变量 sign, 文本型

inputJson = “{‘hosp_dept_codg’:’1’}”
json = “{‘infno’:’5101’, ‘msgid’:’63000000000000000000000008’, ‘mdtrtarea_admvs’:’610602’, ‘insuplc_admdvs’:’610602’, ‘recer_sys_code’:’FSI_LOCAL’, ‘dev_no’:’’, ‘dev_safe_info’:’’, ‘cainfo’:’’, ‘signtype’:’’, ‘infver’:’1.0’, ‘opter_type’:’1’, ‘opter’:’system’, ‘opter_name’:’测试’, ‘inf_time’:’2020-12-03 10:00:00’, ‘fixmedins_code’:’H330102000001’, ‘fixmedins_name’:’延安致美****’, ‘sign_no’:’’, ‘input’:” + inputJson + “}”
调试输出 (json)
sign = encrytSHA256 (“1634710020\n” + json, SECRET)
调试输出 (sign)

.子程序 字节集转十六进制, 文本型, 公开
.参数 bytes, 字节集
.局部变量 i, 整数型
.局部变量 hexString, 文本型

hexString = “”
.判断循环首 (i < 取字节集长度 (bytes))
    hexString = hexString + 格式化数字 (取字节 (bytes, i), “HH”)
    i = i + 1
.判断循环尾 ()

返回 (hexString)
回复

使用道具 举报

结帖率:100% (1/1)

签到天数: 19 天

发表于 3 天前 | 显示全部楼层   云南省楚雄彝族自治州
请楼主查看下

签名生成器易语言实现.txt

2.71 KB, 下载次数: 0

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表