This commit is contained in:
2025-02-18 08:31:38 +08:00
parent b6a71aa49b
commit cf1cc83547
12 changed files with 104 additions and 52 deletions

View File

@@ -10,7 +10,7 @@ var detailRouter = require('./routes/detail');
var app = express();
app.all("*", function (req, res, next) {
// res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Origin", "*");
//允许的header类型
res.header("Access-Control-Allow-Headers", "content-type");
//跨域允许的请求方式

View File

@@ -40,13 +40,13 @@ const list = [
{
id: 1,
title: '安徽新闻综合广播',
play_url: 'https://lhttp-hw.qtfm.cn/live/4919/64k.mp3?app_id=web&ts=67a48ce9&sign=705831eba3a8ea2074db661d516d56c6',
play_url: 'https://manifest-gcp-us-east4-vop1.fastly.mux.com/mwtn4bTsPO00Qz3jZb701qBWsuPiKs1mZgFRp8xHyVYJVehgb72tQ2h4XqE390001IdsNHZxTrV3xBFfVlsl3yXhag/rendition.m3u8?cdn=cloudflare&expires=1739437200&skid=default&signature=NjdhZGI0OTBfNWNlMmJkYmU5NzA2YmI0NzdlYjdiZTE4MDdlYjk4YWEzNTdiN2QyYTNlNzQ0ZmIzZDIwZDBkMTA2NzQ2NDhhMg==&vsid=MkcG7J5VfKN5l4CZ58EvCqZxioR9ksmZvldmjbLQXdvRLCnOOzl2MSrK02ey00rXo8SEl9RfNCM5Y',
comment_list: []
},
{
id: 2,
title: '安徽音乐广播',
play_url: 'https://lhttp-hw.qtfm.cn/live/1947/64k.mp3?app_id=web&ts=67a48d37&sign=ab362f4e8002dac0e2a4b6307e1d377b',
play_url: 'https://manifest-gcp-us-east4-vop1.fastly.mux.com/mwtn4bTsPO00Qz3jZb701qBWsuPiKs1mZgFRp8xHyVYJVehgb72tQ2h4XqE390001IdsNHZxTrV3xBFfVlsl3yXhag/rendition.m3u8?cdn=cloudflare&expires=1739437200&skid=default&signature=NjdhZGI0OTBfNWNlMmJkYmU5NzA2YmI0NzdlYjdiZTE4MDdlYjk4YWEzNTdiN2QyYTNlNzQ0ZmIzZDIwZDBkMTA2NzQ2NDhhMg==&vsid=MkcG7J5VfKN5l4CZ58EvCqZxioR9ksmZvldmjbLQXdvRLCnOOzl2MSrK02ey00rXo8SEl9RfNCM5Yhttps://manifest-gcp-us-east4-vop1.fastly.mux.com/mwtn4bTsPO00Qz3jZb701qBWsuPiKs1mZgFRp8xHyVYJVehgb72tQ2h4XqE390001IdsNHZxTrV3xBFfVlsl3yXhag/rendition.m3u8?cdn=cloudflare&expires=1739437200&skid=default&signature=NjdhZGI0OTBfNWNlMmJkYmU5NzA2YmI0NzdlYjdiZTE4MDdlYjk4YWEzNTdiN2QyYTNlNzQ0ZmIzZDIwZDBkMTA2NzQ2NDhhMg==&vsid=MkcG7J5VfKN5l4CZ58EvCqZxioR9ksmZvldmjbLQXdvRLCnOOzl2MSrK02ey00rXo8SEl9RfNCM5Y',
comment_list: [
{
id: 1,

Binary file not shown.

View File

@@ -3,8 +3,9 @@ module.exports = {
connectionLimit : 100,
host: 'localhost',
user: 'root',
password: 'lb714500',
database: 'shop'
password: 'lb714500.',
database: 'shop',
insecureAuth: true
},
jwt: 'Pc!0YQPA$57iksjA',
rsa: {
@@ -14,7 +15,7 @@ module.exports = {
filter: {
login: '/user/login',
add: '/user/add',
// home: '/home/index',
home: '/home/index',
// type: '/type/list',
// banner: '/home/banner',
// recommend: '/home/recommend'

View File

@@ -1,15 +1,10 @@
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQC9eo8WIbWS5Yql06imlhrW0ZXhfaivPavdULvYLIxIKyUaOwMP
FrPuHqqBNGnYOpiPHAKL+zxk2j4u+6jhB6VK1SODccSLxIRxd0HmSDS+hBzYRf4v
Kc8BLlhMrYhnLmcxCc+PJIIa4DfCZnu8FfQlu/5LljjpYN9kHOpHAT+xpQIDAQAB
AoGAaBRNSqvjkDg0K5iTGEZ1obBocv9STEhFAoGZXUpDGFVSwRDPQleHKHKB2A0R
Yuv05w9MutWbPA7Bf49PGaTYfstFmFuyB2TDpUTqstHfsNDnCwvKOnEU5wbsm8Rr
yq4ParQk1Ba2ut8eHy2sDHNxPaC288tdsi6NnmM2iDe1UaECQQDnulXPZKGU5hLq
zylu7q0+zNPkvVvsjLlM1Y4v02nqiSGJIiFsVsse2WkNNWV9VYkEIDKv1iCsQSxR
8QFsurmpAkEA0VNVv0IPlfqA0jXaP/qMLasgp9hhNQ6fm3PkCd3tq8qZPNMd62hO
5V209xZZrAAFuzLadAom4PrUNRFiGERNnQJBAMmQTX/euqY4EpBorlOuDMgphs7a
35C9P5lT0SBMtz6pFaChLY19WaV122j/303MDyilkTFeAoGTFygXiPO44DECQQDD
1/gtzRzP8WN9SS09Fqj4QVd4MhYgkeH6i18bbCvlwtPD+LHRgfHu3tFlK+AR8KNs
FZQVZToi3AqW7ACfO6hxAkB0L6aTsvrBXJtq1VdyBpWfkC9VdySUcBakd396iedU
BuEIpfsYfdw5xNUhZWhvDrZnDA32CphXHLNfCZUWYJ61
-----END RSA PRIVATE KEY-----
-----BEGIN PRIVATE KEY-----
MIIBUwIBADANBgkqhkiG9w0BAQEFAASCAT0wggE5AgEAAkEAhKWVTpcHLH3lteaX
3eHKMmSYPybgV/bUExDY10POx2ZQyI+xe6XQSYtaA9FJBkoZLfQLXjYkCNhPiDJo
saxd4wIDAQABAkBiOxFf2t5YJ3+2fmbWzP/k47QPiGW5HrQczmwWtkNqTBYNNxAx
vCkwygm61wN95krzGETFtmpkYYb8SM9JbiLxAiEA5qt/CuOJfu+Uu2bnvBnDwpxC
U/IGuKZXlVKyvm2auHkCIQCTNn/UfFT0CojoNltBu49uwdNDwfptvQdaaj9UwsAq
OwIgAkCqfPC75wFv8mSO3sdhogTkoO08I5F8SXkFRdbMLAECICIaR/ajbtKx9hFF
NlK97nZL9HMH5smxNpjdcBpkmzutAiAvXVkx64QEtu/+UtHNo+zNR8ap5HB6a+ZM
sB4t3z2WcA==
-----END PRIVATE KEY-----

View File

@@ -1,6 +1,4 @@
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC9eo8WIbWS5Yql06imlhrW0ZXh
faivPavdULvYLIxIKyUaOwMPFrPuHqqBNGnYOpiPHAKL+zxk2j4u+6jhB6VK1SOD
ccSLxIRxd0HmSDS+hBzYRf4vKc8BLlhMrYhnLmcxCc+PJIIa4DfCZnu8FfQlu/5L
ljjpYN9kHOpHAT+xpQIDAQAB
MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAISllU6XByx95bXml93hyjJkmD8m4Ff2
1BMQ2NdDzsdmUMiPsXul0EmLWgPRSQZKGS30C142JAjYT4gyaLGsXeMCAwEAAQ==
-----END PUBLIC KEY-----

View File

@@ -1,4 +1,4 @@
const mysql = require("mysql");
const mysql = require('mysql2');
const config = require("../config");
class Mysql {

View File

@@ -3,7 +3,8 @@
"version": "0.0.0",
"private": true,
"scripts": {
"start": "node-dev ./bin/www",
"dev": "npm run start",
"start": "node-dev ./bin/www ",
"doc": "apidoc -i routes/ -o doc/",
"build": "pm2 start ./bin/www --watch --name shop -i max"
},
@@ -16,6 +17,7 @@
"md5": "^2.2.1",
"morgan": "~1.9.1",
"mysql": "^2.17.1",
"mysql2": "^3.12.0",
"node-rsa": "^1.0.7",
"pug": "2.0.0-beta11"
}

View File

@@ -1,24 +1,11 @@
const db = require("../mysql");
const rsa = require("../utils/rsa");
var NodeRSA = require('node-rsa')
//1.创建RSA对象并指定 秘钥长度
var key = new NodeRSA({ b: 512 });
key.setOptions({ encryptionScheme: 'pkcs1' });//指定加密格式
// db.query({
// sql: 'select * from user',
// data: [14]
// }).then(success => {
// console.log(success)
// }).catch( err => {
// console.log(err)
// })
//2.生成 公钥私钥,使用 pkcs8标准pem格式
var publicPem = key.exportKey('pkcs8-public-pem');//制定输出格式
var privatePem = key.exportKey('pkcs8-private-pem');
// await db.query({
// sql: 'select * from user',
// data: [14]
// })
var params = {
page: 1,
num: 4
}
var jiami = rsa.PublicKeyEncryption(params);
console.log(jiami)
console.log('公钥:\n',publicPem);
console.log('私钥:\n', privatePem);

View File

@@ -10,7 +10,9 @@ module.exports = {
if(req.headers.hasOwnProperty("data")) {
try {
req.headers.data = rsa.PrivateKeyDecryption(req.headers.data)
if(req.url == config.filter.login || req.url == config.filter.add) {
if(req.url == config.filter.login || req.url == config.filter.add
|| req.url == config.filter.home
) {
next()
} else {
if(req.headers.hasOwnProperty("token")) {
@@ -32,6 +34,11 @@ module.exports = {
}
}
} catch (e) {
console.log("--------");
console.log("e --------: ", e);
console.log("--------");
res.json({
status: 500,
message: '抱歉,公钥加密有误,请检查公钥'

View File

@@ -0,0 +1,53 @@
const NodeRsa = require("node-rsa");
const fs = require("fs");
const path = require("path");
const config = require("../config");
class Rsa {
constructor() {
this.private_key = this.readFiles(this.getFilePath(config.rsa.private_key))
this.public_key = this.readFiles(this.getFilePath(config.rsa.public_key))
}
// 公钥加密
PublicKeyEncryption(text) {
return (new NodeRsa(this.public_key)).encrypt(JSON.stringify(text), 'base64')
}
// 公钥解密
PublicKeyDecryption(text) {
return JSON.parse((new NodeRsa(this.public_key)).decryptPublic(text, 'utf8'))
}
// 私钥加密
PrivateKeyEncryption(text) {
return (new NodeRsa(this.private_key)).encryptPrivate(JSON.stringify(text), 'base64')
}
// 私钥解密
PrivateKeyDecryption(text) {
return JSON.parse((new NodeRsa(this.private_key)).decrypt(text, 'utf8'))
}
/**
* 获取path.join文件地址
* @param paths
* @returns {string}
*/
getFilePath(paths) {
return path.join(__dirname, paths)
}
/**
* 读取文件数据
* @param path
* @returns {*}
*/
readFiles(path) {
return fs.readFileSync(path).toString()
}
}
module.exports = new Rsa();

View File

@@ -7,6 +7,15 @@ class Rsa {
constructor() {
this.private_key = this.readFiles(this.getFilePath(config.rsa.private_key))
this.public_key = this.readFiles(this.getFilePath(config.rsa.public_key))
this.pri_rsa = new NodeRsa(this.private_key,'pkcs8-private-pem')
this.pri_rsa.setOptions({ encryptionScheme: 'pkcs1' })
this.pri_rsa.setOptions({ environment: "browser" });
this.pub_rsa = new NodeRsa(this.public_key,'pkcs8-public-pem')
this.pub_rsa.setOptions({ encryptionScheme: 'pkcs1' })
this.pub_rsa.setOptions({ environment: "browser" });
}
@@ -28,7 +37,7 @@ class Rsa {
// 私钥解密
PrivateKeyDecryption(text) {
return JSON.parse((new NodeRsa(this.private_key)).decrypt(text, 'utf8'))
return JSON.parse(this.pri_rsa.decrypt(text, 'utf8'))
}
/**