ImageVerifierCode 换一换
格式:DOC , 页数:24 ,大小:50.15KB ,
资源ID:10531903      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-10531903.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(上云上平台接口规范v1.0.doc)为本站会员(精品资料)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

上云上平台接口规范v1.0.doc

1、上云上平台接口规范版本修订批准记录【 历次版本修订记录,版本修订描述重要说明】提交日期 版本号 版本修订描述 修改人 备注2019-2-25 0.9 初稿 潘锡均2019-03-07 1.0 完善 杨钊目录1 接口功能说明1.1 概述1.1.1设计目的本规范明确上云上平台与相关的供应商的接口协议,为开发人员在进行接口设计、开发、使用过程中提供指导性意见。1.1.2加密协议使用 rsa 和 aes 相结合的方法加密接口返回数据, 上云上平台 通过请求头方式将公钥告知各个供应商接口,各个供应商接口返回数据时,需要通过 aes 算法对返回数据进行加密,同时也需要利用公钥,对 aes 密钥进行加密处理

2、返回。 相关代码见附录1.1.3编码格式统一是用 UTF-81.2 接口功能说明1.2.1使用说明用户 id、操作开始时间、操作结束时间,获取对应用户操作数据信息1.2.2请求1.2.2.1.1 请求参数统一请求头参数名称 说明 数据类型 可空Content-Type 固定数据类型 application/json; String Ncharset=UTF-8RSAPublicKey Rsa 公钥 String Ndata参数名称 说明 数据类型 可空userId 系统用户id ,可以多个,以逗号分割 String NbeginTime 操作时间开始yyyyMMddHHmmss long Ne

3、ndTime 操作时间结束yyyyMMddHHmmss long Y1.2.2.1.2 请求的 json 文档格式示例“beginTime“:20190306000000,“endTime“:20190307000000,“userId“:“13929537026,15994705655“1.2.2.1.3 请求的安全问题建议对固定 ip 做白名单处理(14.116.209.154, 122.13.1.153, 113.108.192.70)1.2.2.2返回1.2.2.2.1 返回参数参数名称 说明 数据类型 可空respCode “0”:成功,其它:失败。 String NrespMsg

4、返回值详细说明 String Ndata CryptoData 实体key String 加密的 Aes 密钥, Ncontent String 加密的返回数据(加密时请注意将返回结果转为 json字符串再做加密)Object N1.2.2.2.1.1data参数名称 说明 数据类型 可空companyId 企业 id,上云上平台和服务商统一 String YcompanyName 企业名称 String YuserId 用户id,企业自己填报的userId,泛指能够确定用户唯一的数据,如用户编码,电话号码等String NconnectMethod 链接方式,1物联网卡,2-手机app,3-

5、以太网long NmechineId 设备id,物联网卡中的设备号 String 如果链接方式是物联网卡,必填,其他类型,可以为空source 源地址,物联网卡中指卡号N手机app中指手机号以太网中指源iptarget 目标,目标ip或域名 NreqDuring 请求时长,服务端收到请求到返回数据的间隔时间,单位:毫秒,没有就不传,不做要求YcontLen 请求的文本的长度,服务端返回的数据的长度,单位,kb,没有就不传,不做要求YoperateTime 发生时间,格式yyyyMMddHHmmss long N1.2.2.2.2 返回 json 文档格式示例“respCode“: “0“,“r

6、espMsg“: “SUCCESS“,“data“: “key“: “bBw8sRM+zDqk7yJOAd0MmeckqoJveVQSlP6vcK0fs54vrDVmZdDpuu7VugW+JvjiP9pDEb/cUBYFjkwgXOFFkQ=“,“content“: “mk6xF16WxJAKwVBI5d7ULGmpajGuPEa59SRibZrGYrQ4gDmcir7/BKmWmsFt82VCnWAPItQz3nQRnnGDCSJ9tMxRBdkpXH76OwD7mKPV+s+alfaA+tuUtYSM/omTFHdc8kjxA6V+sFK5rDDtbV6amT+5nJwWYtlqtMHC

7、L34L1m6hE+agF5nTDvgaqhJzKkNwy2BecybxIeFo6f1LJXySv46q3ZvUmIBhwceTlnnWoWisBPAAbjR/rwhJv0oEc4nNKWRILOD83RQSs9YqV3noqd0Aq2UTm0lWIbBFO2tW0Wm9yC1Unfnb2e6MRdkLOK2FApp6Fk4+YEXK6NwmdrvhZEN7I7+mfM+kWEF45jW1vhzJUI3JqjaMZ2oLacl3shfnM79LQSjrJZqxHxzlMcCxd3HMgZlIe6Cw3JgEajsRmzs4Ni0nVg+uFgQUsJPufUq0mnWOAsH4mZoPnadC

8、030Q2gssRv7vSF6PG75WrnGzYdGlpOselJHlBWVfwrGP3jS4K7pp/Jczk/K6p54QRjKbsNQqInSCzpC8dBcQxZRB42KlwMiy7OKkek7Sslbc20LlANvaSFAkO481Az4g6KLlzkAtSrmCL3perrYDAHne6B0/6YiZ+nuq0GHkeKmDG9mfEDqU/wWZUAMGC+NG6T3uWp5wnT5fezuifKjNqaXRHWtbxjTeApmnLd8AQG1aTiHlURxwbOV3pnVrwrPiaNEsY332CMSqHoU6lMNzp8LELEseqkS3TjEYFtFOMfCV

9、J91Bnhycsr7TPhsU/fx1DIc+PLkUBsODCBi8WEaHK6FB4zciemmVgJ4bWl+icq52D226eDZ7A+xFRKWranHQFcKpK0hf1Ak8K6K3s4H3buDQmNpS5bS2SozSetPJRixImw6w/9Y3OLHR/cIlAzzUB6372YDbs4nr5t/ipTAYIhGjWj58GjCFwd+Jtjn1FwGXVpYSADJdrWZS0ZkRRRWjAjB2BVKeQ14CeLhJFjEcyQ7n3MR+gfMw/1iQ6fhOya/yC1uMvkihg9VlkohHjRliA8qdKkQTaVr1kXEE+/LiBK5N

10、nbL6Z+/FDFpHnzJCm5WWihkh7XEGCUoTvpHIdxa0bQp9FXTkdVSdd/6fm6J3ukL3PJ3YMO/U/kDxza8euc4EJ1R77naiSGXWuZ/Xfge7kCrYxeU3Sg/A4VVkbxmqj8V2FjMeYH9vJtBNUPbg2vuP0dSOt0G1yj0ffLHcGunaCmd1zK75knQBWNseQNhGwDdU9LEGKqrDfUPfGk50XnzxWAwLPF5B6p4jaba03jXt/W8z1Dkao+0nNJZP9PLaxc469zEE3rEU1jPxQYsSTolKeovrJgPeWAcCsfGj/1zb59Rc

11、Bl1aWEgAyXa1mUtGZEUUnVowIwdgVSnkNeAni4SRYxHMkO9zEfoHzMP9YkOn4Tsmv8gtbjL5IoYPVZZKIR40ZYgPKnSpEE2lan9ZFxBPvy4gSuTZ2y+mfvxQxaR8yQpuVlooZIe1xBglKE76RyHfdxKg6j9SgDxtctDJ3CF3WAf1Y/nlQ+2mIdQeL0nOCoQhTqUw3OnwsQsSx6qRLdOMRgW0U4x8JUn3UGHJyyvtM+GxT9/HUMhz48uRQGwn4MIGLxYRocroUHjNyJ6aZWAnhtaX6JyrnYPbbp4NnsD7EVEp

12、atodAVwqkrSF/UCTwrorezgfdu4NnCY2lLltLZKjNJy4DUKMFnUB2qfSfHP9t3QHNlTmgzbaRZLhPV0Z42TFVlMBgiEaNaPnwaMIXB34mn2OfUXAZdWlhIAMl2tZlLRmRFFFaMCMHYFUp5DXgJ4uEkWMRzJDvcxH6B8zD/WJDp+E7Jr/ILW4y+nSKGD1WWSiEeNGWIDyp0qRBNpWvWRcQT78uIErk2dsvpn78UMWkfMkKblZaKGSHtcQYJShO+kch1GnTimAO9fg+QVKyms7Qinxne6Qvc8ndgw79T+QPHNr

13、x65zgQnVHvtqJIZda5n9d+B7uQKtjF5TdKD8nDhVWRvGadehqX5rQZzBabMqdvoj13aMx6Njwun9YWNmdIRn4MhNoKZ3XMrvmSdAFY2x5A2EbAN1Tn0sQYqqsN9Q98aTnRefPFYDAs8XkHqniNptrTeNfto1iNmRj6RlT4X4FckOIVzjr3MQTesRTWM/FBnixJOiUp6i+smA95YBwKx8aP/XNvn1FwGXVpYSADJdrWZS0ZkRRRWjAjB2BVKeQ14CeLhJOQbqI5vnDpJPHwoKuoM15ZhOya/yC1uMvkihg9Vl

14、kohHjRliA8qdKkQTaVr1kXEE+/LiBK5NnbL6Z+/FDFpHnzJCm5WWihkh7XEGCUoTvpHIdDZeILbBYCtKA0pMHdn6jE53ukL3PJ3YMO/U/kDxza8euc4EJ1R77naiSGXWuZ/Xfge7kCrYxeU3Sg/A4VVkbxmqj8V2FjMeYH9vJtBNUPbg2vuP0dSOt0G1yj0ffLHcGunaCmd1zK75knQBWNseQNhGwDdU9LEGKqrDfUPfGk50XnzxWAwLPF5B6p4jaba03jXoQqpOTlzXv2Fnq9OwvudRgpQw6yYkJMVj5fQt

15、Tt3FYpcJxzQ78GOda5apPt/TVpO/QJ8AuDg7kbFCqqhYzqeHmZ2OnjTcmL+w+9zLP/m8X6W9nYMpkEsz8POz5CfiCv7q19m0WtNuxYwOX4Impf3wTp+zRt3uRDt1lwBGcnmYlooPTP09YPnr/Uo/6dvxSpmxjz1VI7jCxThiazCyvKXvcAoyUjB04oVanBFyBHhEeAIkompyYAnuWSVDVNsZtkrSMeernOBCdUe+2okhl1rmf134Hu5Aq2MXlN0oPwOFVZG8Zp16GpfmtBnMFpsyp2+niPXdozHo2PC6f1hY

16、2Z0hGfgyE2gpndcyu+ZJ0AVjbHkDYRsA3VPSxBiqqw31D3xpOdF588VgMCzxneQeqeI2m2tN412v6yOzeePwD/qHF8rMW3kDOOvcxBN6xFNYz8UGLEk6JSnqL6yYD3lgHArHxo/9cn2+fUXAZdWlhIAMl2tZlLRmRFFFaMCMHYFUp5DXgJ4uEkWMRzJDvcxH6B8zD/WJDp+E7Jr/ILW4y+nSKGD1WWSiEeNGWIDyp0qRBNpWvWRcQT78uIErk2dsvpn78UMWkfMkKblZaKGSHtcQYJShO+kch25nNNhYtKc3

17、H80VapNtfCJpgH9WP5UPtpiHUHi9JzgqEIU6lMNzp8LELEseqkS3TjEYFtFOMfCVJ91Bnhycsr7TPhsU/fx1DIc+PLkUBsODCBi8WEaHK6FB4zciemmVgJ4bWl+icq52D226eDZ7A+xFRKWranHQFcKpK0hf1Ak8K6K3s4H3buDQmNpS5bS2SozScyBv3bJf/CqOWVN/SqsUVED0LIpuXPP8UUYJycn1CoDCCyTqdlohijxZgSM/yPVXKEs6QvHQXEMWUQeNipcDIsuzipHpO0rJW3NtC5QDb2khaPPSCpjn

18、XTQTm7ad71mgQ/ci96Xq62AwB3ugdP+mImfp7qtBh5HipgxvZnxA6lP8FmVADBgvjRuk97lqecJ0n+X3s7onyozaml0R1rW8Y03gKmO6MA14NB0VtIcyZZ2Yf6GZfJk9ZkrlTIIKpVSru11jwgvl5nnJtnhLTQ8wCJwNBejv6Z8z6RYQXjmNbW+HMlQjcmqNoxnagtpyXeyF8zv0tJf65333oG4ZqFfS/O1pO5nmUh7oLDcmARqOxGbOzg2LSdWD64WBBSwk+59SrSadY4CwfiZmg9p0LTfRDaCyxG/u9IXo

19、8bvlaucnbNh0aWk6xzOaFCffugC61hQ7tp5QHNPGfAgz3lW6q+Q5AKK4ySeR8kjxA6V+sFK5rDDtbV6amT+5nJwWYtlqtMHCL34L1m6h5/kw3grZMHsu1ccp5QvkbvC22B4vQp2MZ2fvr2XSCjKq3ZvUmIBhwceTlnnWoWisBPAAbjR/rwhJv0oEc4nNKWRILOD83RQSs9YqV3noqd0In2Wgs4BYXOAmFLRYE2JrWC1Unfnb2e6MRdkLOK2FApp6Fk4+YEXK6NwmdrvhZEN7I7+mfM+kWEF45jW1vhzJUI3J

20、qjaMZ2oLacl3shfnM79LSX+ud996BuGahX0vztaTuZlIe6Cw3JgEajsRmzs4Ni0nVg+uFgQUsJPufUq0mnWOAsH4mZoPnadC030Q2gssRv7vSF6PG75WrnGzYdGlpOse+iKS0z2Y6i+/vYqa8dR3QxnwIM95VuqvkOQCiuMknnkfJI8QOlfrBSuaww7W1empk/uScFmLZarTBwi9+C9Zuoef5MN4K2TB7LtXHKeUL5G7wttgeL0KdjnGdn769l0goyqt2b1JiAYcHHk5Z1qForATwAG40f68ISb9KBHOJzSl

21、kSCzg/N0UErPWKld56KndAhnYMy5k82J0lHAD1ime8QQgtVJ329nujEXZCzithQKaehZOPmBFyujcJna74WRDeyO/pnzPpFhBeOYn1tb4cyVCNyao2jGdqC2nJd7IXzO/S0l/rnffegbhmoV9L87Wk7mZSHugsNyYBGo7EZs7ODYtJ1YPnrhYEFLCT7n1KtJp1jgLB+JmaD2nQtN9ENoLLEb+70hejxu+Vq5xs2HRpaTrH5oYP3Nf30uArcsXznG6mQCMZ8CDPeVbqr5DkAorjJJ5HySPEDpX6wUrmsMO1tX

22、pqZP7knBZi2Wq0wcIvfgvWbqET5qAXmndMO+BqqEnMqQ3DLYF5zJvEh4Wjp/UslfJK/jqrdm9SYgGHBx5OWdahaKwE8ABuNH+vCEm/SgRzicn0pZEgs4PzdFBKz1ipXeeip3QSpsn0XKJ3h0NlHhae6K2KoLVSd9vZ7oxF2Qs4rYUCmnoWTj5gRcrno3CZ2u+FkQ3sjv6Z8z6RYQXjmNbW+HMlQjcmqNoxnagtpyXeyF8zv0tBKOslmrEfHOUxwLF3ccyBnmUh7oLDcmARqOxGbOzg2LSdWD64WBBSwk+59S

23、rSadY4CwfiZmg9p0LTfRDaCyxG/u9IXo8bvlaucnbNh0aWk6x594miyGpT9EhAo7F5tNRDPGfAgz3lW6q+Q5AKK4ySeR8kjxA6V+sFK5rDDtbV6amT+5nJwWYtlqtMHCL34L1m6hE+agF5nTDvgaqhJzKkNwy2BecybxIeFo6f1LJXySv46q3ZvUmIBhwceTlnnWoWisBPAAbjR/rwhJv0oEc4nNKWRILOD83RQSs9YqV3noqd0HLznTpO4om/PdC56k5OBL/MdDqvn1L2QJFoWtDYQdFR+fmYjJ/WoS9qmq

24、2CSIIOK3749yuz0sSMoEWPiFseGyRuYwi7PqgMLV/gskxZ2nwmQvpzcfmJX9OTliirm7oakZkhYnXYn+Sytvqg+7H87XR8ZpqWoxrjxGufUkYm2axmK0OIA5nIq+n/wSplprBbfNlQp1gDyLUM950EZxgwkifbTNumBFW0SgPvIkO7eHh8AmBYX0YkJLI+ib6YigXi9BJnDWeYh1Xu/xvknrjaNtQX/09AnwC4ODuRsUKqqFjOp4eZQm09ZQeV6Zix10LLFW9T+XWycyweAnY/ngIMOmM4u6HP2bRa027FjA

25、5fgial/fBOn7NG3e5EO3WXAEZyZiWig9M/T1g+ev9Sj/p2/FKmbGPN4ndqlT8TcmoWvlJYJtVAst0hUmFDfCRgxdE/4R3vPIbCanJgC5ZJUNU2xm2StIx56uc4EJ1R77aiSGnXWuZ/Xfge7kCrYxeU3Sg/A4VVkbxmqj8V2FjMeYH9vJtBNUPbg2vuP0dSOt0G1yj0ffLHcGuaCmdn1zK75knQBWNseQNhGwDdU9LEGKqrDfUPfGk50XnzxWAwLPF5B6p4jaba03jXRBFsshaAYe9OaSrCnG8bRkJQw6yYkJ

26、MVj5fQtTt3FYpcJxzQ78GOda5apPt/TVpO/QJ8AuDg7kbFCqqhYzqeHmUJtPWUHnlemYsddCyxVvU/l1snMsHgJ2P4CDDpjOLuhz9m0WtNuxYwOX4Impf3wTp+zRt3uRDt1lwBGcmYlonoPTP09YPnr/Uo/6dvxSpmxjz0hRxvkvrP+bpqSq1SPVQ/oIgcJdzpT8XzjrzfEHaCUncQYAE0H6XnuJWWtamOlG9+vj3K7PSxIygRY+IWx4bJG5jCLs+qAwtX+CyTFnbCZC+nNx+Ylf05OWKKubuhqRmSnFiddi

27、f5LK2+qD7sfztdHxmmpajGuPEa59SRibZrGYrQ4gDmcir7/BKmWmsFt82VCnWAPItQz3nQRnnGDCSJ9tM88tuKxd7zgjz83m71pntAialfaA+tuUtYSM/omTFHdc8kjxA6V+sFK5rDDtbV6amT+5nJwWYtlqtMHCL34L1m6hE+agF5nTDvgaqhJzKkNwy2BecybxIeFo6f1LJXySv46q3ZvUmIBhwceTlnnWoWisBPAAbjR/rwhJv0oEc4nNKWRILOD83RQSs9YqV3noqd0Cbjcux9dBRiviY+LmLNpCC1Un

28、fnb2e6MRdkLOK2FApp6Fk4+YEXK6NwmdrvhZEN7I7+mfM+kWEF45jW1vhzJUI3JqjaMZ2oLacl3shfnM79LQSjrJZqxHxzlMcCxd3HMgZlIe6Cw3JgEajsRmzs4Ni0nVg+uFgQUsJPufUq0mnWOAsH4mZoPnadC030Q2gssRv7vSF6PG75WrnGzYdGlpOsfRJ6BAQ6ySGRJD7G7pQhoAJczk/K6p54QRjKbsNQqInSCzpC8dBcQxZRB42KlwMiy7OKkek7Sslbc20LlANvaSFAkO481Az4g6KLlzkAtSrmCL

29、3perrYDAHne6B0/6YiZ+nuq0GHkeKmDG9mfEDqU/wWZUAMGC+NG6T3uWp5wnT5fezuifKjNqaXRHWtbxjTeAoDn+NBsSCod7ReVpEuHg2i9Zl8mT1mSuVMggqlVKu7XWPCC+Xmecm2EtNDzAInA0F6O/pnzPpFhBeOYn1tb4cyVCNyao2jGdqC2nJd7IXzO/S0Eo6yWasR8c5THAsXdxzIGZSHugsNyYBGo7EZs7ODYtJ1YPnrhYEFLCT7n1KtJp1jgLB+JmaD2nQtN9ENoLLEb+70hejxu+Vq5xs2HRpaTr

30、HLwZD9sGlYGHIpCB7nYXsvTyXM5PyuqeeEEYym7DUKiEgs6QvHQXEMWUQeNipcDIsuzipHpO0rJW3NtC5QDb2khQJDuPNQnM+IOii5c5ALUq5g8gApEyUewM94sxPVIh3A1“附录 A, package com.cdc.workcloud.manage.util;import mon.util.JsonMapper;import mons.codec.binary.Base64;import org.springframework.stereotype.Component;import org.spring

31、framework.util.Base64Utils;import javax.crypto.Cipher;import java.security.*;import java.security.interfaces.RSAPrivateKey;import java.security.interfaces.RSAPublicKey;import java.security.spec.PKCS8EncodedKeySpec;import java.security.spec.X509EncodedKeySpec;import java.util.Date;import java.util.Ha

32、shMap;import java.util.Map;/* 非对称加密算法 RSA 算法组件* 非对称算法一般是用来传送对称加密算法的密钥来使用的,相对于 DH 算法, RSA 算法只需要一方构造密钥,不需要* 大费周章的构造各自本地的密钥对了。 DH 算法只能算法非对称算法的底层实现。而 RSA 算法算法实现起来较为简单* author kongqz*/Componentpublic class RSACoder /非对称密钥算法public static final String KEY_ALGORITHM = “RSA“;/* 密钥长度, DH 算法的默认密钥长度是 1024* 密钥长度

33、必须是 64 的倍数,在 512 到 65536 位之间*/private static final int KEY_SIZE = 512;/公钥private static final String PUBLIC_KEY = “RSAPublicKey“;/私钥private static final String PRIVATE_KEY = “RSAPrivateKey“;/* 初始化密钥对* return Map 甲方密钥的 Map*/public static Map initKey() throws Exception /实例化密钥生成器KeyPairGenerator keyPai

34、rGenerator = KeyPairGenerator.getInstance(KEY_ALGORITHM);/初始化密钥生成器keyPairGenerator.initialize(KEY_SIZE);/生成密钥对KeyPair keyPair = keyPairGenerator.generateKeyPair();/甲方公钥RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();/甲方私钥RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();/将密

35、钥存储在 map 中Map keyMap = new HashMap();keyMap.put(PUBLIC_KEY, publicKey);keyMap.put(PRIVATE_KEY, privateKey);return keyMap;/* 私钥加密* param data 待加密数据* param key 密钥* return byte 加密数据*/public static byte encryptByPrivateKey(byte data, String key) throws Exception byte keyBytes = Base64Utils.decodeFromStr

36、ing(key);/取得私钥PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(keyBytes);KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);/生成私钥PrivateKey privateKey = keyFactory.generatePrivate(pkcs8KeySpec);/数据加密Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm();cipher.init(Cipher.

37、ENCRYPT_MODE, privateKey);return cipher.doFinal(data);/* 公钥加密* param data 待加密数据* param key 密钥* return byte 加密数据*/public static byte encryptByPublicKey(byte data, String key) throws Exception byte keyBytes = Base64Utils.decodeFromString(key);/实例化密钥工厂KeyFactory keyFactory = KeyFactory.getInstance(KEY_

38、ALGORITHM);/初始化公钥/密钥材料转换X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(keyBytes);/产生公钥PublicKey pubKey = keyFactory.generatePublic(x509KeySpec);/数据加密Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm();cipher.init(Cipher.ENCRYPT_MODE, pubKey);return cipher.doFinal(data);/* 私钥解密* par

39、am data 待解密数据* param key 密钥* return byte 解密数据*/public static byte decryptByPrivateKey(byte data, String key) throws Exception byte keyBytes = Base64Utils.decodeFromString(key);/取得私钥PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(keyBytes);KeyFactory keyFactory = KeyFactory.getInstance(KEY

40、_ALGORITHM);/生成私钥PrivateKey privateKey = keyFactory.generatePrivate(pkcs8KeySpec);/数据解密Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm();cipher.init(Cipher.DECRYPT_MODE, privateKey);return cipher.doFinal(data);/* 公钥解密* param data 待解密数据* param key 密钥* return byte 解密数据*/public static byte d

41、ecryptByPublicKey(byte data, String key) throws Exception byte keyBytes = Base64Utils.decodeFromString(key);/实例化密钥工厂KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);/初始化公钥/密钥材料转换X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(keyBytes);/产生公钥PublicKey pubKey = keyFactory.generate

42、Public(x509KeySpec);/数据解密Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm();cipher.init(Cipher.DECRYPT_MODE, pubKey);return cipher.doFinal(data);/* 取得私钥* param keyMap 密钥 map* return byte 私钥*/public static String getPrivateKey(Map keyMap) Key key = (Key) keyMap.get(PRIVATE_KEY);return Base6

43、4Utils.encodeToString(key.getEncoded();/* 取得公钥* param keyMap 密钥 map* return byte 公钥*/public static String getPublicKey(Map keyMap) throws Exception Key key = (Key) keyMap.get(PUBLIC_KEY);return Base64Utils.encodeToString(key.getEncoded();package com.cdc.workcloud.manage.util;import java.security.Key

44、;import java.util.UUID;import javax.crypto.Cipher;import javax.crypto.spec.SecretKeySpec;import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder;public class AESSecurityUtil / 加密算法/* 指定加密算法为 RSA */private static final String ALGORITHM = “AES“;/ 加密密钥/ private static final byte keyValue = new byte

45、 T, h, e,/ B,e, s, t, S, e, c, r, e, t, K, e, y ;/ 16 位的加密密钥/ private byte keyValue;/* 用来进行加密的操作* param* return* throws Exception*/public static String encrypt(String keyString, String data)throws Exception Key key = generateKey(keyString);Cipher c = Cipher.getInstance(ALGORITHM);c.init(Cipher.ENCRY

46、PT_MODE, key);byte encVal = c.doFinal(data.getBytes();String encryptedValue = new BASE64Encoder().encode(encVal);return encryptedValue;/* 用来进行解密的操作* param encryptedData* return* throws Exception*/public static String decrypt(String keyString, String encryptedData) throws Exception Key key = generate

47、Key(keyString);Cipher c = Cipher.getInstance(ALGORITHM);c.init(Cipher.DECRYPT_MODE, key);byte decordedValue = new BASE64Decoder().decodeBuffer(encryptedData);byte decValue = c.doFinal(decordedValue);String decryptedValue = new String(decValue);return decryptedValue;public static String generateKeySt

48、ring()/必须长度为 16return UUID.randomUUID().toString().replaceAll(“-“, “).substring(0, 16);/* 根据密钥和算法生成 Key* return* throws Exception*/private static Key generateKey(String keyString) throws Exception Key key = new SecretKeySpec(keyString.getBytes(), ALGORITHM);return key;public static void main(String args) throws ExceptionString keyString = generateKeyString();/ String keyString = “1234567890123456“;System.out.println(“密钥: “ + keyString);String source = “恭喜发财!“;/ 要加密的字符串System.out.println(“准备用密钥加密的字符串为: “ + source);String cryptograph = encrypt

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报