1.1.1 • Published 5 years ago

eft-encrypt v1.1.1

Weekly downloads
-
License
ISC
Repository
-
Last release
5 years ago

示例

<!doctype html>
<html>

<head>
    <style>

    </style>
</head>
<script src="./eft-crypto.js"></script>

<body>
    <button id="button" onclick="send()">发送请求</button>
</body>
<script>
    function send() {
        console.log(EFT.getSignature('E2028'));
        var xmlHttp;
        if (XMLHttpRequest) {
            xmlHttp = new XMLHttpRequest();
        } else {
            xmlHttp = new ActiveXObject();
        }
        var body = { key: 1 };
        const PUBLIC_LEY = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvtPrDbm/rl0FrfXmrNZWk/b6Pj+DjnaqlOfSYaU+em4C7DiodfpFxckchhv+WUp0QXnkdKnVGZElziCt8GNBCCUaYatrtpierzUX+VkTUe8LEQpQAGtA7fVt8mgrsewxvScieGNUBo4UV9WOfmwiiSK5NcKePLkq+r4efLcmUfZannyA0f4hj/mgG3Y6dxO+CFBe1BX/wQn9Opa3efAgD5CaO1sqrbh/5KCBRSCBCaw7k3pFG3czmEWkE/shTht5jDH2EGH3vUhdA8SjNyNdwrVO2kp2C+V20ox7T3FXKeAm65o3yk07I43TGInkoznylP/XZl6nBXI8P9f4qFfeGwIDAQAB';
        encryptData = EFT.aesEncrypt(16, body);
        const encryptKey = EFT.rsaEncrypt(PUBLIC_LEY, encryptData.key);

        xmlHttp.onreadystatechange = function () {
            if (xmlHttp.readyState == 4) {
                if ((xmlHttp.status >= 200 && xmlHttp.status <= 300) || xmlHttp.status == 304) {
                    let body = JSON.parse(xmlHttp.response);
                    console.log(EFT.aesDecrypt(encryptData.key, body._resp_body));
                }
            }
        }
        xmlHttp.open('POST', 'http://localhost:3000/crypto', true);
        xmlHttp.setRequestHeader("content-type", 'application/x-www-form-urlencoded');
        xmlHttp.setRequestHeader("req-key", encryptKey);
        xmlHttp.send('requestBody=' + encryptData.encryptData);
    }
</script>

</html>
const koa = require('koa');
const app = new koa();

const Router = require('koa-router');
const router = new Router();
var bodyParser = require('koa-bodyparser');
app.use(bodyParser());

app.use((ctx, next) => {
    if (ctx.method === 'OPTIONS') {
        ctx.body = '';
    }
    next();
});
app.use((ctx, next) => {
    let origin = ctx.headers.origin;
    // if (whiteList.includes(origin)) {//如果判断是否存在,不建议使用indexOf
    ctx.set('Access-Control-Allow-Origin', '*');
    ctx.set('Access-Control-Allow-Headers', "req-key,req-uuid,encryption");
    ctx.set('Access-Control-Allow-Methods', "PUT");
    ctx.set('Access-Control-Allow-Credentials', true);
    ctx.set('Access-Control-Max-Age', 60);
    //新增的部分
    ctx.set('Access-Control-Expose-Headers', 'response');
    //
    // }
    next();
})


router.post('/crypto', async (ctx, next) => {
    ctx.body = {
        _req_id: ctx.request.headers['req-uuid'],
        _resp_body: ctx.request.body.requestBody
    };
})
app.use(router.routes());
app.listen(3000);
console.log('koa server is listening port 3000');