RSA本身的加密是有长度限制的 所以使用分段加密的方式来加密
首先引入jsencrypt.min.js
下面是分段加密的方法

// 分段加密方法
JSEncrypt.prototype.encryptLong2 = function (string) {

    var k = this.getKey();

    try {

        //RSA每次加密最大117bytes,需要辅助方法判断字符串截取位置

        var ct = ""; 

        //1.获取字符串截取点

        var bytes = new Array();

        bytes.push(0);

        var byteNo = 0;

        var len, c;

        len = string.length;

        var temp = 0;

        for (var i = 0; i < len; i++) {

            c = string.charCodeAt(i);

            if (c >= 0x010000 && c <= 0x10FFFF) {

                byteNo += 4;

            } else if (c >= 0x000800 && c <= 0x00FFFF) {

                byteNo += 3;

            } else if (c >= 0x000080 && c <= 0x0007FF) {

                byteNo += 2;

            } else {

                byteNo += 1;

            }

            if ((byteNo % 117) >= 114 || (byteNo % 117) == 0) {

                if (byteNo - temp >= 114) {

                    bytes.push(i);

                    temp = byteNo;

                }

            }

        }

        //2.截取字符串并分段加密

        if (bytes.length > 1) {

            for (var i = 0; i < bytes.length - 1; i++) {

                var str;

                if (i == 0) {

                    str = string.substring(0, bytes[i + 1] + 1);

                } else {

                    str = string.substring(bytes[i] + 1, bytes[i + 1] + 1);

                }

                var t1 = k.encrypt(str);

                ct += t1;

            };

            if (bytes[bytes.length - 1] != string.length - 1) {

                var lastStr = string.substring(bytes[bytes.length - 1] + 1);

                ct += k.encrypt(lastStr);

            }

            return hexToBytes(ct);

        }

        var t = k.encrypt(string);

        var y = hexToBytes(t);

        return y;

    } catch (ex) {

        return false;

    }

};

具体的代码太长 就不一一贴了 下面发一张效果图 demo链接在文章最后
截图-2021-12-03-17.33.48-576x1024.png

好了 下面是demo 有兴趣的可以下载看一下 rsaJs版