开放API接口及其安全性
Posted alittlecomputer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了开放API接口及其安全性相关的知识,希望对你有一定的参考价值。
开放出来给别人调用的API接口是就是开放API接口。
弱点:
数据窃取
用户的密码等信息被不轨之人窃取,登录账号发布敏感信息,盗刷等。
数据篡改
提交的数据被抓包后进行篡改再提交。
数据泄露
爬虫将业务数据甚至核心数据抓取,直接或者间接造成损失。
RSA/DES加密
MD5混淆
TOKEN令牌
有令牌才能通过,没有令牌则不能通过
加密分为对称加密和非对称加密
对称加密有:DES,AES
加密和解密是使用同一套秘钥
非对称加密有:RSA
公钥和私钥
公钥加密,私钥解密
RSA可以用来加密和签名
HTTPS,收费,性能会稍微低一些。
HTTPS既使用了对称加密,也是用了非对称加密
/** * 引用的包都是Java自带的jar包 * base64编码解码 */ import java.security.Key; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.interfaces.RSAPrivateKey; import java.security.interfaces.RSAPublicKey; import java.util.HashMap; import java.util.Map; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; public class CreateSecrteKey { public class Keys{ } public static final String KEY_ALGORITHM = "RSA"; private static final String PUBLIC_KEY = "RSAPublicKey"; private static final String PRIVATE_KEY = "RSAPrivateKey"; //获得公钥 public static String getPublicKey(Map<String,Object>keyMap) { Key key = (Key) keyMap.get(PUBLIC_KEY); System.out.println(key.toString()); return encryptBASE64(key.getEncoded()); } //获得私钥 public static String getPrivateKey(Map<String,Object>keyMap) { Key key = (Key) keyMap.get(PRIVATE_KEY); return encryptBASE64(key.getEncoded()); } //解码返回字符串 public static byte[] decryptBASE64(String key) throws Exception { return (new BASE64Decoder()).decodeBuffer(key); } public static String encryptBASE64(byte[]key) { return (new BASE64Encoder()).encodeBuffer(key); } public static Map<String, Object> initKey() throws Exception{ KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance(KEY_ALGORITHM); keyPairGen.initialize(1024); KeyPair keyPair = keyPairGen.generateKeyPair(); RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic(); RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate(); Map<String, Object> keyMap = new HashMap<String,Object>(2); keyMap.put(PUBLIC_KEY, publicKey); keyMap.put(PRIVATE_KEY, privateKey); return keyMap; } public static void main(String[] args) { // TODO Auto-generated method stub Map<String, Object> keyMap; try { keyMap = initKey(); String publicKey = getPublicKey(keyMap); System.out.println(publicKey); String privateKey = getPrivateKey(keyMap); System.out.println(privateKey); }catch(Exception e) { e.printStackTrace(); } } }
以上是关于开放API接口及其安全性的主要内容,如果未能解决你的问题,请参考以下文章