byte[] clearText = aesDecrypt(key, iv, cipherText); System.out.println(new String(clearText, StandardCharsets.UTF_8)); }
@SneakyThrows publicstaticbyte[] aesDecrypt(byte[] key, byte[] iv, byte[] cipherText) { // constructor a secret key SecretKeySpec secretKey = new SecretKeySpec(key, AES);
// init algorithm parameters with iv AlgorithmParameters algorithmParameters = AlgorithmParameters.getInstance(AES); IvParameterSpec ivParameterSpec = new IvParameterSpec(iv); algorithmParameters.init(ivParameterSpec);
// init a AES cipher with key and iv Cipher cipher = Cipher.getInstance(AES_CBC_PKCS_5_PADDING); cipher.init(Cipher.DECRYPT_MODE, secretKey, algorithmParameters);
三重 DES (triple - DES) 是为了增加 DES 的强度, 将 DES 重复 3 次的一种密码算法,也称为 TDEA (Triple Date Ecnryption Algorithm), 通常称为 3DES。
三重 DES 的加密过程:
明文经过三次 DES 处理变为密文,所以三重 DES 的密钥长度是 56 * 3=168 比特. 三重 DES 并不是进行三次加密,而是 加密 --> 解密--> 加密 的过程, 此方法由 IBM 公司设计,目的是兼容普通的 DES, 当三重 DES 使用的所有密钥都相同时,三重 DES 就相等于普通的 DES , 因为 加密-->解密 就变为明文了。因此三重 DES 对 DES 具备向下兼容性
DES-EDE2: 密钥1和密钥3使用相同的密钥,密钥2使用不同的密钥
DES-EDE3: 密钥1,密钥2,密钥3全部使用不同的比特序列
三重 DES 的解密过程:
三重 DES 的解密过程和加密正好相反,以密钥3,密钥2,密钥1的顺序执行 解密-->加密-->解密 的操作
关于 DES 与 3DES 的使用
由于 DES 的密文已经可以在短时间内被破译,处理解密以前的密文,不应该再使用 DES 了。三重 DES 由于处理速度不高,很少被用于新的用途。
在日本总务省和经济产业省 2013 年发布的《电子政府相关技术采购中参考的密码清单》中,“电子政府推荐使用的密码清单” 项中将 3-key Triple DES 作为 64 比特分组密码列了出来,但考虑到 IST SP 800-67 的规定,以及其事实性标准的地位,又在脚注中给出了“目前暂且允许使用”的描述
https://api.weibo.com/oauth2/authorize? client_id=3129654709& //客户端 id redirect_uri=https://www.douyu.com/member/oauth/signin/weibo& //重定向客户端 uri state=96b2a0b5a31566c5f63b2322f987736a& //state 防止恶意调用客户端重定向 uri response_type=code& //授权码许可类型 approval_prompt=force& //授权提示? scope=foo bar //客户端期望的权限范围
用户同意授权,表单提交到授权码生成端点 /approve,对提交表单的请求验证 (随机值),权限范围进行验证(表单请求可能会被篡改,所以需要再次验证),生成授权码 code,存储在授权服务器上,并保存与之对应的权限范围(在令牌端点可以取出来,与访问令牌形成对应关系),客户端请求,并将其通过客户端请求授权时的重定向 uri 重定向到客户端,并且在查询参数上应用了客户端的 state 值(对客户端提供跨站保护,虽然不要求客户端传递该参数,但是要求授权服务器只要收到该参数就返回它)
直接运行在浏览器内的客户端,此时,客户端没有必要再通过授权码获取访问令牌,因为授权码是通过浏览器(前端信道)发送给客户端的,对于浏览器来说是可见的(如果是 web 应用,是直接发送给客户端服务器的)。直接请求授权端点, 而不是令牌端点来获取访问令牌,其它流程与授权码许可类型相似,客户端 id 检查,授权端点检查权限范围,资源拥有者身份认证,并验证对请求的批准,生成令牌,在授权端点响应中,将令牌附在客户端重定向 URI 片段中 。