diff --git a/DProto/SK.xml b/DProto/SK.xml new file mode 100644 index 0000000..6f46dd3 --- /dev/null +++ b/DProto/SK.xml @@ -0,0 +1,51 @@ + + + + + SK + + + + 需要产生的随机数长度 + 注意: 最大不超过4K + + + + + + + SL + + + + + + + + + + + + + + + + + + + diff --git a/doc/java接口说明文档.docx b/doc/java接口说明文档.docx index 3c9bc04..d4dc478 100644 Binary files a/doc/java接口说明文档.docx and b/doc/java接口说明文档.docx differ diff --git a/src/main/java/com/sunyard/inf/SydZYOption.java b/src/main/java/com/sunyard/inf/SydZYOption.java index 8dc28d2..d6489bb 100644 --- a/src/main/java/com/sunyard/inf/SydZYOption.java +++ b/src/main/java/com/sunyard/inf/SydZYOption.java @@ -255,4 +255,10 @@ public interface SydZYOption { byte[] decryptByMainAndSYMEn(String encryptKeyIndex, int encryptAlgFlag, byte[] encryptIv, int encryptKeyDivNum, List encryptKeyDivData, int[] encryptKeyDivAlgFlag, List encryptKeyDivIv, byte[] inputData); + /** + * 产生随机数 + * @param nRandomSize 产生随机数长度 + * @return 随机数 + */ + String GenRandom(int nRandomSize); } diff --git a/src/main/java/racal/sunyard/main/SydApi4j.java b/src/main/java/racal/sunyard/main/SydApi4j.java index f607bcd..c5f4323 100644 --- a/src/main/java/racal/sunyard/main/SydApi4j.java +++ b/src/main/java/racal/sunyard/main/SydApi4j.java @@ -9932,5 +9932,40 @@ public class SydApi4j implements SydApi { } } + @Override + public String GenRandom(int nRandomSize) { + //获取协议 + ProtoSK proto = new ProtoSK(); + + //填充数据 + PacketSN sn = PacketSN.gen(); + HashMap packet = new HashMap(); + packet.put("header", sn.getSn().array()); + HashMap data = new HashMap(); + data.put("nRandomSize", nRandomSize); + packet.put("data", data); + + //渲染发送 + ByteBuffer bb = proto.rend(packet); + + synchronized (this) { + //解析响应 + bb = syncRead(syncSend(bb)); + } + Packet p = proto.parse(bb, packet); + Map ret = p.toMap(); + if ( + !Arrays.equals(sn.getSn().array(), ((PacketSection) ret.get("header")).getBytes()) + ) { + throw new SydApiException("包序号不匹配", -4); + } + ret = (Map) ret.get("data"); + PacketSection error = (PacketSection) ret.get("error"); + if (!"00".equals(error.getString())) { + throw new SydApiException(error.getInfo(), error.autoInt()); + } + return Util.bytes2HexString(((PacketSection) ret.get("random")).getBytes()); + } + // ---------------------中移指令结束-------------------------------- }