//package com.cscn; // ///** // * 演示主函数 // */ //public final class Zuc256Demo { // // public static void main(String[] args) { // // 1. 明文 // byte[] plaintext = "ZUC256对称加解密测试:1234567890".getBytes(); // int plaintextLen = plaintext.length; // System.out.println("明文: " + new String(plaintext)); // printHex("明文(十六进制)", plaintext, plaintextLen); // // // 2. 密钥(32字节ASCII) // byte[] key = "0123456789abcdef0123456789abcdef".getBytes(); // printHex("密钥", key, 32); // // // 3. 初始向量(25字节ASCII) // byte[] inputIv25Byte = "0123456789abcdefg01234567".getBytes(); // byte[] iv = new byte[23]; // extractIv(inputIv25Byte, iv); // printHex("提取后的IV", iv, 23); // // // 4. 分配加密/解密缓冲区 // byte[] ciphertext = new byte[plaintextLen]; // byte[] decryptedtext = new byte[plaintextLen]; // // // 5. 加密 // Zuc256State stateEnc = new Zuc256State(); // Zuc256Core.initState(stateEnc, key, iv); // zuc256Crypt(stateEnc, plaintext, plaintextLen, ciphertext); // printHex("密文", ciphertext, plaintextLen); // // // 6. 解密(重新初始化状态) // Zuc256State stateDec = new Zuc256State(); // Zuc256Core.initState(stateDec, key, iv); // zuc256Crypt(stateDec, ciphertext, plaintextLen, decryptedtext); // printHex("解密后", decryptedtext, plaintextLen); // System.out.println("解密文本: " + new String(decryptedtext)); // // // 7. 验证结果 // if (Arrays.equals(plaintext, decryptedtext)) { // System.out.println("=== 测试成功: 解密结果与明文一致 ==="); // } else { // System.out.println("=== 测试失败: 解密结果与明文不一致 ==="); // } // } // // // 一次性加密 // public static void zuc256Crypt(Zuc256State state, byte[] in, int inlen, byte[] out) { // if (state == null || in == null || out == null) return; // // Zuc256EncryptCtx ctx = new Zuc256EncryptCtx(state); // // // 执行加解密 // ctx.update(in, inlen, out); // int remainingOffset = (inlen / 4) * 4; // byte[] finishOut = new byte[out.length - remainingOffset]; // if (finishOut.length > 0) { // System.arraycopy(out, remainingOffset, finishOut, 0, finishOut.length); // } // ctx.finish(finishOut); // System.arraycopy(finishOut, 0, out, remainingOffset, finishOut.length); // } //}