正在加载图片...
if(key.length-offset<len){ throw new llegalArgumentException("key too short): } if(algorithm==null) throw new lllegalArgumentException("algorithm =null"): this algorithm =algorithm: this.key=new byte[len] System.arraycopy(key.offset.this.key..len): 其实两个构造参数的目的是一样的,一个就是设置原始的秘钥参数,另外一个就是设置这把 秘钥所针对的编码方式。 文个物浩参数是关罐其金的方法感微设啥好讲的。另外有一个关键点是这个米实现了三 .KeySpe able 其中最后一个,很有意思,说明这把钥匙是可以 序列化的。存储,传输应该没毛病。 4.3编码解码工具cipher: her类相比干上一个类就要复杂的多。但是他的目的是用来根据秘钥和加密模式来对指定 的数据进 行加密的。但是他又是可以支持多种类型的加密方式的.并且同时也支持相应的解 密。所以大 说 ,它必须需要两个关键信息 1加密模式2秘钥所以最上面的解密demG 为啥子要这样用,以及参数的意义到现在心里应该有个大概的认识。我们暂且剖析几个比较 关键的方法。 431 Ciph 看了上方的使用范例,我们首先会Cipher..getinstance(ALGORITHMLAES):这个方法来获取 个cipher实例。其实Cipher还有一个重载的getinstance(方法。但是两者的目的是相同的. 都是用来产生一个cipher对象。期间涉及了一些参数检测相关的操作。 方法如下: public static final Cipher getinstance(String transformation) oublic provider 其中这个方法有个关键参数.是Stig类型的。但这并不代表着你随便塞 一个字符串就行 的。这个参数是有特殊意义的。这个字符串实则是描述了要对给定的输入究竞做哪种操作。 比如单单是DS加密算法,里面的内部操作有些规则还是要单独定义的。比如分组的时候, 是以8位为单元划分还是16位单元划分,如果最后不够一个单元的话,需要用什么来填补 其他的位来凑成一个单元。 这些细节都是需要我们去定义的。transforma tion这个参数恰恰 是要说明这件事情的, 1 transformation参数:长得大致格式如下 "algorithm./mode/padding”或者 "algorithm" :Cipher c=Cipher.getlnstance("DES/CBC/PKCS5Pad ode:表示要用到的算法模式。通常是用来指定算法分割数据时的单元要有多少位。因为 毕竟加密算法时把数据进行一系列有顺序的位操作的。当然这个ode具体要代表是何种 操作根据具体的算法而定。这里只是说明一下个人见解。 if (key.length - offset < len) { throw new IllegalArgumentException("key too short"); } if (algorithm == null) { throw new IllegalArgumentException("algorithm == null"); } this.algorithm = algorithm; this.key = new byte[len]; System.arraycopy(key, offset, this.key, 0, len); } 其实两个构造参数的目的是一样的,一个就是设置原始的秘钥参数,另外一个就是设置这把 秘钥所针对的编码方式。 这个构造参数是关键,其余的方法感觉没啥好讲的。另外有一个关键点是,这个类实现了三 个接口:SecretKey, KeySpec, Serializable, 其中最后一个,很有意思,说明这把钥匙是可以 序列化的。存储,传输应该没毛病。 4.3 编码解码工具 cipher: cipher 类相比于上一个类就要复杂的多。但是他的目的是用来根据秘钥和加密模式来对指定 的数据进行加密的。但是他又是可以支持多种类型的加密方式的,并且同时也支持相应的解 密。所以大致来说,它必须需要两个关键信息。1 加密模式 2 秘钥!所以最上面的解密 demo 为啥子要这样用,以及参数的意义到现在心里应该有个大概的认识。我们暂且剖析几个比较 关键的方法。 4.3.1 Cipher.getInstatnce() 看了上方的使用范例,我们首先会 Cipher.getInstance(ALGORITHM_AES); 这个方法来获取一 个 cipher 实例。其实 Cipher 还有一个重载的 getInstance()方法。但是两者的目的是相同的, 都是用来产生一个 cipher 对象。期间涉及了一些参数检测相关的操作。 方法如下: public static final Cipher getInstance(String transformation) public static final Cipher getInstance(String transformation, String provider) 其中这个方法有个关键参数,是 String 类型的。但这并不代表着你随便塞一个字符串就行 的。这个参数是有特殊意义的。这个字符串实则是描述了要对给定的输入究竟做哪种操作。 比如单单是 DES 加密算法,里面的内部操作有些规则还是要单独定义的。比如分组的时候, 是以 8 位为单元划分还是 16 位单元划分,如果最后不够一个单元的话,需要用什么来填补 其他的位来凑成一个单元。这些细节都是需要我们去定义的。transformation 这个参数恰恰 是要说明这件事情的。 1 transformation 参数: 长得大致格式如下 “algorithm/mode/padding” 或者 “algorithm” 例如 :Cipher c = Cipher.getInstance("DES/CBC/PKCS5Padding"); algorithm:表示要用到的算法。 mode:表示要用到的算法模式。通常是用来指定算法分割数据时的单元要有多少位。因为 毕竟加密算法时把数据进行一系列有顺序的位操作的。当然这个 mode 具体要代表是何种 操作根据具体的算法而定,这里只是说明一下个人见解
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有