Просмотр исходного кода

'修改教学视频访问权限'

Althars123 3 лет назад
Родитель
Сommit
b16bca5a95

+ 1 - 1
zzjs-admin/src/main/java/com/miaxis/app/controller/teachingVideo/AppletTeachingVideoInfoController.java

@@ -24,7 +24,7 @@ import org.springframework.web.bind.annotation.RestController;
  */
 @RestController
 @AllArgsConstructor
-@RequestMapping(Constants.STUDENT_PREFIX+"/teachingVideo/info")
+@RequestMapping(Constants.OPEN_PREFIX+"/teachingVideo/info")
 @Api(tags={"【小程序-教学视频】"})
 public class AppletTeachingVideoInfoController extends BaseController {
 

+ 88 - 0
zzjs-common/src/main/java/com/miaxis/common/utils/rsa/RsaUtils.java

@@ -0,0 +1,88 @@
+package com.miaxis.common.utils.rsa;
+
+
+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;
+
+/**
+ * 引进的包都是Java自带的jar包
+ * 秘钥相关包
+ * base64 编解码
+ * 这里只用到了编码
+ */
+
+public class RsaUtils {
+
+
+
+    public static final String KEY_ALGORITHM = "RSA";
+    //public static final String SIGNATURE_ALGORITHM = "MD5withRSA";
+    private static final String PUBLIC_KEY = "RSAPublicKey";
+    private static final String PRIVATE_KEY = "RSAPrivateKey";
+
+    //获得公钥
+    public static String getPublicKey(Map<String, Object> keyMap) throws Exception {
+        //获得map中的公钥对象 转为key对象
+        Key key = (Key) keyMap.get(PUBLIC_KEY);
+        //byte[] publicKey = key.getEncoded();
+        //编码返回字符串
+        return encryptBASE64(key.getEncoded());
+    }
+
+    //获得私钥
+    public static String getPrivateKey(Map<String, Object> keyMap) throws Exception {
+        //获得map中的私钥对象 转为key对象
+        Key key = (Key) keyMap.get(PRIVATE_KEY);
+        //byte[] privateKey = key.getEncoded();
+        //编码返回字符串
+        return encryptBASE64(key.getEncoded());
+    }
+
+    //解码返回byte
+    public static byte[] decryptBASE64(String key) throws Exception {
+        return (new BASE64Decoder()).decodeBuffer(key);
+    }
+
+    //编码返回字符串
+    public static String encryptBASE64(byte[] key) throws Exception {
+        return (new BASE64Encoder()).encodeBuffer(key);
+    }
+
+    //map对象中存放公私钥
+    public static Map<String, Object> initKey() throws Exception {
+        //获得对象 KeyPairGenerator 参数 RSA 1024个字节
+        KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance(KEY_ALGORITHM);
+        keyPairGen.initialize(1024);
+        //通过对象 KeyPairGenerator 获取对象KeyPair
+        KeyPair keyPair = keyPairGen.generateKeyPair();
+
+        //通过对象 KeyPair 获取RSA公私钥对象RSAPublicKey RSAPrivateKey
+        RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();
+        RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();
+        //公私钥对象存入map中
+        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) {
+        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();
+        }
+    }
+}

+ 76 - 0
zzjs-common/src/main/java/com/miaxis/common/utils/rsa/test.java

@@ -0,0 +1,76 @@
+package com.miaxis.common.utils.rsa;
+
+
+import org.springframework.util.Base64Utils;
+
+import java.io.UnsupportedEncodingException;
+import java.nio.charset.StandardCharsets;
+import java.security.*;
+import java.security.spec.InvalidKeySpecException;
+import java.security.spec.PKCS8EncodedKeySpec;
+import java.security.spec.X509EncodedKeySpec;
+import java.util.Base64;
+
+public class test {
+
+
+    static String  private_key = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAMLNHTgsyYOXDJVF8r4qCyb+8Uw4" +
+            "XKq8aThAhUIaPYIop+HJxETGbXk3e0o46i4iOX8RTv0i3jmhL6W0mSxy9ismfXPP7VtKgEt6VnMm" +
+            "ufsrQ2kcXyRsKmuwUd3rTH5gniXwLdIPF8V5ujiSq94nPHok1krDMWbss8Q7lcH2kQFHAgMBAAEC" +
+            "gYBh6Eu2TzRdMg79+7EciO8gA2Tt5SoWGipcPnl7lsqxX5O5dPpzgrPFB/CshlyVIVh6mA12Rw8g" +
+            "MfZLt7CA2asFdgGHfgCvMjsCnL2U1Nf1QFnsnGXmFXeVUvdy7XPILi75rVyOEAw+/f3KzjSA7B3w" +
+            "URE8M2QlIUcjm8LLyCVC4QJBAO+taJH7pVZGVn2upsOk14X08QU0lsQ7ufe/8VXe+IujwGMh34U6" +
+            "BHGV7grodtA7TvQ3mDggQLHB2+IxBWdDCrcCQQDQEVMI+CD7afEyN9rK/MAJwevtxNaTyEd1bhKw" +
+            "t6WKr1YbAdUz2gvnpCQjD1Gqt5yXHKu279msX9W4euXePG3xAkBUCYZn4UdIp+L9sHZSlQLoukik" +
+            "HZtbdOGw58Ez7blSJPl5CNB5wyz5sqtDcdzvCEyXvsKFs3FbonB5r9yIJ26jAkEAugGC1dXcxmWj" +
+            "dl1wf18M3qw6GkmJ+ntlRpmso8bJev3cYDB3RO99DQw0MhOT0qZqmrzK1bP+SJc0HMPhk5c6QQJA" +
+            "WRLIxmeM/P9X2mDjMrI46Wnn27QoKGgYSHdPxmLD0y7NUytf5HyCsY2vhA9FZcnikibax7SwzC/B" +
+            "D7yOXFAy/Q==";
+    static String public_key ="MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDCzR04LMmDlwyVRfK+Kgsm/vFMOFyqvGk4QIVC" +
+            "Gj2CKKfhycRExm15N3tKOOouIjl/EU79It45oS+ltJkscvYrJn1zz+1bSoBLelZzJrn7K0NpHF8k" +
+            "bCprsFHd60x+YJ4l8C3SDxfFebo4kqveJzx6JNZKwzFm7LPEO5XB9pEBRwIDAQAB";
+
+    public static void main(String[] args) throws Exception {
+        String content  = "我很666";
+        // 进行签名服务
+        Signature signature = Signature.getInstance("SHA256withRSA");
+        KeyFactory kf = KeyFactory.getInstance("RSA");
+        PrivateKey privateKey =  kf.generatePrivate(new PKCS8EncodedKeySpec(Base64.getDecoder().decode(private_key)));
+
+        signature.initSign(privateKey);
+        signature.update(content.getBytes("UTF-8"));
+        byte[] signedData = signature.sign();
+        String base64Str =  Base64.getEncoder().encodeToString(signedData);
+        System.out.println("签名值为:"+base64Str);
+
+        //验签
+
+        PublicKey publicKey =  kf.generatePublic(new X509EncodedKeySpec(Base64.getDecoder().decode(public_key)));
+        signature.initVerify(publicKey);
+        // 把我们构造的验签名串更新到签名器中
+        signature.update(content.toString().getBytes(StandardCharsets.UTF_8));
+        Boolean result = signature.verify(Base64Utils.decodeFromString(base64Str));
+        System.out.println("签名结果:"+result);
+
+
+    }
+
+    public Boolean validateSign(String openId , String isVip ,String sign) throws Exception{
+        //rsa 公钥
+        String publicKeyBase64 ="MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDCzR04LMmDlwyVRfK+Kgsm/vFMOFyqvGk4QIVC" +
+                "Gj2CKKfhycRExm15N3tKOOouIjl/EU79It45oS+ltJkscvYrJn1zz+1bSoBLelZzJrn7K0NpHF8k" +
+                "bCprsFHd60x+YJ4l8C3SDxfFebo4kqveJzx6JNZKwzFm7LPEO5XB9pEBRwIDAQAB";
+        // 构造被签名串
+        String verifyString = openId+ isVip;
+        KeyFactory kf = KeyFactory.getInstance("RSA");
+        PublicKey publicKey =  kf.generatePublic(new X509EncodedKeySpec(Base64.getDecoder().decode(publicKeyBase64)));
+        Signature signature = Signature.getInstance("SHA256withRSA");
+        signature.initVerify(publicKey);
+        // 把我们构造的被签名串更新到签名器中
+        signature.update(verifyString.getBytes("UTF-8"));
+        return signature.verify(Base64Utils.decodeFromString(sign));
+
+    }
+
+
+}