|
背景:java端有一套现成的代码,现在需要迁移到lua。 Q" Q% Y' x+ P% W
测试时:使用的key为同一个key = "1938703285589872452";1.java加密代码pom
) y# X5 r" f' m0 k. @) C" o- <dependency>" N! v1 k; m+ w% z
- <groupId>org.bouncycastle</groupId>
, L6 n7 `2 K/ t0 R& y B- m1 U8 L - <artifactId>bcprov-jdk15on</artifactId>
. f/ e9 J! E, D1 w0 [: q+ q3 O. R - <version>1.55</version>
3 r' k( @- K2 n" A - </dependency>$ G1 w- }8 i& o7 a- q6 H
" D) X. J4 E, ^- s V2 C- <dependency>1 O3 B- a# w# ~6 a9 o7 v
- <groupId>org.bouncycastle</groupId>9 l; t( U1 S; ^( S. G% D# H
- <artifactId>bcpkix-jdk15on</artifactId>
# j0 S/ Z3 d) S4 D" ?, W' k% l8 k - <version>1.55</version>; g; z1 ^: H! u7 f! q# v
- </dependency>
( z$ ]2 ]: T. U) G - 9 @# P5 N! t' ^# C" ]. E. M& t8 i% `
- <dependency>
# E+ y9 x2 Y6 d) u* t5 K5 G6 B4 E - <groupId>commons-codec</groupId>" E @2 V7 E, h0 s5 @1 {# e, ~& f
- <artifactId>commons-codec</artifactId>. f" d+ W( B K6 h- a6 g ^
- <version>1.10</version> </dependency>
1 d! {5 D6 o* G. S
; k' d. x# L/ V; T
代码
- ]6 o- X) A+ d3 `- import org.apache.commons.codec.binary.Base64;
- R2 [' f1 N. |: _9 K3 H9 {1 U - import org.bouncycastle.crypto.engines.AESEngine;; q& d# ]9 }; d, b+ O8 k
- import org.bouncycastle.crypto.modes.CBCBlockCipher;& W2 f) n5 f% j/ W3 f/ z7 q
- import org.bouncycastle.crypto.paddings.PKCS7Padding;: R2 b A1 t1 f! x) J- L) W: W
- import org.bouncycastle.crypto.paddings.PaddedBufferedBlockCipher;
9 Y4 q/ @. u! W' [ - import org.bouncycastle.crypto.params.KeyParameter;. Z. W0 \% N* K/ E! o( s
. _$ A/ ?; u; Y4 J$ A* C4 B- import java.nio.ByteBuffer;
" o0 P' |5 g1 t9 y4 n - import java.nio.charset.StandardCharsets;7 h0 a/ k2 k1 F- r# L! E
; w# t# A7 R, m! C- // ...
0 s! l; f4 O3 A. z7 G
) ~; t5 L8 U& |- h/ f- // 加密方法
- U/ W/ ?# \. t p/ n5 r - public static String encryptWithBC(String data, String key) throws Exception {5 @4 z/ `0 V& m! m
- // key
; t4 w' E( S2 g5 X - ByteBuffer keyBuffer = ByteBuffer.allocate(32);
. y# r- [- n: ?5 Y3 d( H0 t6 m - keyBuffer.put(key.getBytes());' ~2 H: ~0 O3 P* ^
- KeyParameter keyParameter = new KeyParameter(keyBuffer.array());+ m6 ?+ ~* D o0 s }* P- p
- // 请求数据
# O' e4 b) ]& i0 D9 i - byte[] dataByteArr = data.getBytes(StandardCharsets.UTF_8);2 f3 r; e, @) r
7 {& Y' ^; _5 X! M- // init9 F7 z, I4 O. `1 C! }) K
- CBCBlockCipher aes = new CBCBlockCipher(new AESEngine());
4 n3 ~) J, x+ O- B% }' E9 P - PaddedBufferedBlockCipher cipher = new PaddedBufferedBlockCipher(aes, new PKCS7Padding());
% [9 W0 [5 T1 G1 @& | - cipher.init(true, keyParameter);
. M2 [$ @8 B0 E2 ]+ C
, S" u9 Z6 S2 @/ e w* [- byte[] output = new byte[cipher.getOutputSize(dataByteArr.length)]; V. C; D9 s; J/ e d9 @
- int len = cipher.processBytes(dataByteArr, 0, dataByteArr.length, output, 0);
, s. _9 r- P8 d$ ? j; h# n - cipher.doFinal(output, len);' m- D. \% c y/ I6 |( s
; Z! Y1 r) m7 L# u8 x- return Base64.encodeBase64String(output); }
" [8 G+ m3 ^/ S }# R % y' g( X/ R+ f2 \
2.lua的加密代码* T1 v$ Z3 K9 y0 E% ~, v
- -- AES加密& F3 S$ R! v- v) o7 p
- local aes = require "resty.aes"
, z. s7 A" p @& o/ K% i6 I - 7 K9 O6 w3 U' _# g* V9 q
- -- ...
6 W( G. w# I2 L7 S5 ^8 s - : {8 \) O. A2 P* T
- -- 加密方法
1 v: ?$ x9 Y3 P+ K1 K - function _M.encrypt_128_cbc_pkcs7(en_data, aes_key)) Z' Z; A1 J/ @, a: Q
- --local aes_256_cbc_with_padding = aes:new(key, nil, aes.cipher(256,"cbc"), {iv = string.sub(key, 1, 16)}, nil, nil, enable_padding)
4 ?7 B& {7 M! _$ P& Q0 c - local aes_128_cbc_pkcs7 = aes:new(aes_key, nil, aes.cipher(128, "cbc"), nil, nil, nil, "
KCS7")7 |* M+ P' g! }
- local encrypted = aes_128_cbc_pkcs7:encrypt(en_data)
$ g, J2 y7 u- q: d% l( H$ U - -- 转base641 Z( ^7 }) A \- ~ @- _0 d( K' ]; K" w
- local encrypted_base64 = wkg_hex_utils.str_to_base64(encrypted)5 r* {+ y6 I2 ] G- d$ n
- local encrypted_hex = wkg_hex_utils.str_to_hex(encrypted_base64)9 J `$ ^$ K. s: e4 u7 C
! s* M$ J! Z+ w' j7 m- + z% H$ c! _ A; J5 N7 A, l
- wkg_log_utils.log("AES加密结果(BASE64): {}", encrypted_base64)) N z' y. v" _' H8 e# x: d. r
- wkg_log_utils.log("AES加密结果(Hex): {}", encrypted_hex) b9 [' X N$ `" j" X) \
- return encrypted_base64end f0 L2 V& F1 m A6 N( O$ E. N4 c
! o7 g" Y8 `1 ?: J
lua是参考的git:
7 v( F# z6 Q8 Y5 y1 J( fhttps://github.com/openresty/..." C$ j0 `+ Q; j/ o7 E5 M! h5 Q
0 G/ f& g; ?5 Q8 `( F) }5 W
我只能看出cbc、pkcs7Padding这几个信息,现在结果值完全对不上。; ?* I: [" B" `4 L3 `( B
8 z# L7 t% D8 D0 s$ K& l
没有方向,还望各位指导一下,谢谢啦。我知道答案 回答被采纳将会获得12 金钱 已有0人回答 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|