本文目录一览:
如何用java实现asn1编解码..急急急急急急急急急!!!
byte[] content=contentStr.getBytes("asn1"); //如果asn1是一种编码,这就是将字符串转换成asn1的二进制
AES加密 在PC上和Android上不一样 怎么解决
你没有指定RNG的Provider
未指定的情况下 Android 2.3以上版本使用的是 随机数序列是 Android's OpenSSL-backed security provider
以下版本是 BouncyCastle Security Provider
JDK 1.7内没有这个Provider, 这个Android自己搞的,你服务端一定解不出来的。
目前Android支持的 RNG有以下几种
Android's OpenSSL-backed security provider 1ASN.1, DER, PkiPath, PKCS7
BouncyCastle Security Provider v1.49 HARMONY (SHA1 digest; SecureRandom; SHA1withDSA signature) Harmony JSSE Provider Android KeyStore security provider
服务端如果也没指定的话,默认使用的是
SUN (DSA key/parameter generation; DSA signing; SHA-1, MD5 digests; SecureRandom; X.509 certificates; JKS keystore; PKIX CertPathValidator; PKIX CertPathBuilder; LDAP, Collection CertStores, JavaPolicy Policy; JavaLoginConfig Configuration)
Oracle JDK 1.7 环境下 支持以下
SUN (DSA key/parameter generation; DSA signing; SHA-1, MD5 digests; SecureRandom; X.509 certificates; JKS keystore; PKIX CertPathValidator; PKIX CertPathBuilder; LDAP, Collection CertStores, JavaPolicy Policy; JavaLoginConfig Configuration)
Sun RSA signature provider
Sun Elliptic Curve provider (EC, ECDSA, ECDH)
Sun JSSE provider(PKCS12, SunX509 key/trust factories, SSLv3, TLSv1)
SunJCE Provider (implements RSA, DES, Triple DES, AES, Blowfish, ARCFOUR, RC2, PBE, Diffie-Hellman, HMAC)
Sun (Kerberos v5, SPNEGO)
Sun SASL provider(implements client mechanisms for: DIGEST-MD5, GSSAPI, EXTERNAL, PLAIN, CRAM-MD5, NTLM; server mechanisms for: DIGEST-MD5, GSSAPI, CRAM-MD5, NTLM)
XMLDSig (DOM XMLSignatureFactory; DOM KeyInfoFactory)
Sun PC/SC provider
Sun's Microsoft Crypto API provider
你们服务端要是用的 什么 OPENJDK 第三方虚拟机,php什么的话,那就只有天知道支不支持了。
不过你看也知道了 JDK里的都是SUN自己搞的, Android JVM里挂载的不是Android专用的就是第三方开源的,我估计你是找不到一样的 随机数生成器 方案了
ASN.1的定义
抽象语法定义:
ASN.1是描述在网络上传输信息格式的标准方法。它有两部分:一部分描述信息内数据,数据类型及序列格式;另一部分描述如何将各部分组成消息。它原来是作为X.409的一部分而开发的,后来才自己独立成为一个标准。ASN.1在OSI的ISO 8824/ITU X.208(说明语法)和ISO 8825/ITU X.209(说明基本编码规则)规范。
例如:
Report ::= SEQUENCE {
author OCTET STRING,
title OCTET STRING,
body OCTET STRING,
biblio Bibliography
}
在这个例子中,"Report"是由名字类型的信息组成的,而SEQUENCE表示消息是许多数据单元构成的,前三个数据单元的类型是OCTET STRING,而最后一个数据类型见下面的ASN.1语法表示它的意义:
Bibliography ::= SEQUENCE {
author OCTET STRING
title OCTET STRING
publisher OCTET STRING
year OCTET STRING
}
ASN.1宏定义是什么意思啊?
一、模块定义:ASN.1的基本单位是模块,用于定义一个抽象数据类型,ASN.1的模块实际上是由一些类型定义和值定义构成,类型的定义是说明类型的名称和类型的格式,值定义是指将什么样的具体值赋给某类型,模块定义的基本形式
moduleIdentifier DEFINTIONS::=
BEGIN
EXPORTS
AssignmentList
END
其中,moduleIdentifier是模块名,模块名的第一个字母必须大写,EXPORTS结构用于定义其它模块可以移值的类型或值,而IMPORTS结构规定了模块中某些定义是从其它模块中移值过来的,AssignmentList部分包含模块定义的所有类型、值和宏定义
二、宏表示
ASN.1宏提供创建“模板”来定义宏的方法,MIB对象就是采用宏定义模板来定义的
宏表示:ASN.1提供的一种表示机制,用于定义宏
宏定义:用宏表示定义的一种宏,代表一个宏实例的集合
宏实例:用具体的值来定义宏定义中的变量,而产生的实例,代表一种具体的类型,宏定义的模块形式为:
macroname MARCO::=
BEGIN
TYPE NOTATION::=user
defined type notation
VALUE
NOTATION::=user defined value notation
supporting syntax
END
其中macroname是宏名,必须全部大写,宏定义由类型表示,值表示和支持产生式三部分构成,最后一部分是关于宏定义体中类型的详细语法说明
三、宏实例的定义
当用一个具体值来代替宏定义中的变量(或参数)时就产生了一个宏实例,它表示了一个实际的ASN.1类型,并且规定了该类型可取值的集合,宏实例的定义首先是对象名,然后是宏定义的名字,最后是宏定义规定的宏体部分
icmpIImsgs OBJECT-TYPE
SYNTAX Countter
ACCESSS read-only
STATUS mandatory
::={icmp 1}