很好啊 之前 ruby 用 SM2,还要用 java 实现
这点确实不太友好,这么多年项目中涉及到的第三方接口,都是拿 restapi 自己封装,不过大多情况也没啥难度
图有水分,坐标北京切身感受是越来越少
java 加密代码示例
// 公钥测试数据
String encodedPub = "041b0aebadc6444cce91d0c17add879cee687c12a0e6c6373f63dfb5d8253261829c909743567878b037f173980c8a7d744eb54fcb47fa2f585e18fd3619eee988";
// 待加密数据
String data = "123";
final String SPEC_NAME = "sm2p256v1";
final X9ECParameters x9ECParameters = GMNamedCurves.getByName(SPEC_NAME);
final ECDomainParameters ecDomainParameters = new ECDomainParameters(x9ECParameters.getCurve(), x9ECParameters.getG(), x9ECParameters.getN());
byte[] pointBytes = Hex.decode(encodedPub);
ECPoint q = x9ECParameters.getCurve().decodePoint(pointBytes);
ECPublicKeyParameters ecPublicKeyParameters = new ECPublicKeyParameters(q, ecDomainParameters);
// 采用 C1 || C3 || C2 的模式
SM2Engine sm2Engine = new SM2Engine(SM2Engine.Mode.C1C3C2);
sm2Engine.init(true, new ParametersWithRandom(ecPublicKeyParameters));
byte[] dataBytes = data.getBytes();
byte[] cipherBytes = sm2Engine.processBlock(dataBytes, 0, dataBytes.length);
//加密结果
String encryptedData = new String(Base64.encode(cipherBytes));
加密结果
BLTZm74dfgY+11nF3uXPP383l7su5gBUb+tZJSWuBeeYoODuDUC+cgPfIxNdWsaNwjmis1Inca0NR32phYWynP/3HnFX3VJ0LFZYhUDdwuAApO72o23D5bWPiaR7Pkb3+/n7PA==
好的 多谢 那就用 java 写个吧
源码加密理解:
key = OpenSSL::PKey::EC.new("SM2")
key.generate_key
public_key = key.public_key
public_key_hex = public_key.to_bn.to_s(16).downcase
# 加密
data = "123"
signature = key.dsa_sign_asn1(data)
signature_base64 = Base64.encode64(signature).gsub("\n", "")
如果前提已知 公钥和秘钥了,使用 group 方式重新赋值公钥秘钥加密,和 java 加密不一致,java 不能解密,求解?
public_key = "041b0aebadc6444cce91d0c17add879cee687c12a0e6c6373f63dfb5d8253261829c909743567878b037f173980c8a7d744eb54fcb47fa2f585e18fd3619eee988"
private_key = "f3898159803d4ba4484232d9e29acdda1d098ffc37a5d64db96b606794b43572"
data = "123" # 待加密数据
group = OpenSSL::PKey::EC::Group.new('SM2')
ec = OpenSSL::PKey::EC.new(group)
ec.private_key = OpenSSL::BN.new(private_key, 16)
public_key_bn = OpenSSL::BN.new(public_key, 16)
point = OpenSSL::PKey::EC::Point.new(group, public_key_bn)
ec.public_key = point
signature = ec.dsa_sign_asn1(data)
signature_base64 = Base64.encode64(signature).gsub("\n", "")
能再详细介绍下使用例子么 谢谢
国密 SM2 的加密方式知道咋搞么?
我的 vultr 昨天也被墙,无奈更换一台服务器换个 ip,继续打游击
支持
顶一下
要解决每次部署编译 js 时间太长,linked_dirs 可以加上
['tmp/cache','public/assets']
确实很不错,受益匪浅
🍰 🎂 🎉
大家第二语言选择谁
顶一下!我也在东升科技园,ruby 伙伴!
你可以用select2 多选,gem select2-rails能满足你的需求
核对一下你的公钥和私钥,支付宝公钥以及自己的公私钥配置是否正确
同一订单不能重复支付!订单 ID 重复,貌似也会出现这种情况
目前项目用的是聚合,用着还不错
#15 楼 @eagle_122 产品很好,当时贵公司也极力挽留,可惜离着远,当时确实不方便搬家,希望你们尽快找到合适的人
赞一个,虽然没去成,但是面试官留给我的印象很不错,公司也很有诚意,希望小伙伴们踊跃前往
weixin_authorize 会生成weixin_controller_decorator.rb
,自带handle_scan_event
方法
重写此方法
# 扫描带参数二维码事件: 2. 用户已关注时的事件推送
def handle_scan_event
# reply_text_message("扫描带参数二维码事件: 2. 用户已关注时的事件推送, keyword: #{@keyword}")
scene_id = @keyword
openid = @weixin_message.FromUserName
message = User.bind_user openid,scene_id
reply_text_message(message)
end
最近做了一个扫二维码加好友的功能,使用 weixin_authorize,基本思路是生成的二维码带有随机数生成的 scene_id,scene_id 绑定用户,用户扫码后会获取 scene_id 和 open_id 进行处理
#13 楼 @bajiudongfeng webuploader 你看一下这个,有分片上传功能
#11 楼 @bajiudongfeng 传到阿里云文件服务器了
顶一个,同行业~还挨得这么近,哈哈
位置离我不太远,顶一个
工作时间自由度很不错