将AES加密从Java移植到Objective
我的任务是将AES加密从Java移植到Objective-C。我无法访问进行解密的服务器代码。使用FBEncryptor,我成功地在Objective-C中对字符串进行了简单的AES加密,并在Java中对其进行了解密,反之亦然
然而,当我试图将Objective-C中的加密数据发送到服务器(我同样无法访问服务器)时,服务器向我发送了一个“DER input not A octet string”错误。我认为这段代码是用Java编写的,我无法在Objective-C中复制它,而Objective-C正是我成功完成任务的必经之路
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, sKey);
String ivBase64 = Base64.encodeBytes(cipher.getParameters().getEncoded());
ivBase64
与加密字符串一起发送到服务器
非常感谢您对如何将这一小部分移植到Objective-C的任何帮助
谢谢
# 1 楼答案
发生的情况是} ,其描述如下:
cipher.getParameters()
调用返回AlgorithmParameters
的一个实例。此实例有一个方法^{现在,据我所知,没有所谓的默认ASN。对IV进行1阶编码,但由于IV基本上是字节数组,因此最符合逻辑的ASN。1编码是八位字节字符串。当DER编码时,这是ASN。1 type有一个标签,其值为
04h
,然后是长度。长度将始终是直接编码为单个字节的IV的大小。IV将始终具有基础密码的块大小,对于AES,它始终为16字节最后,您应该可以将值为
04h
和10h
的字节前置到IV