关键词搜索

源码搜索 ×
×

Laravel笔记-用户登录时密码进行RSA加密(提高系统安全性)

发布2022-07-24浏览3005次

详情内容

前段时间写了一篇提高Laravel用户登录,登录失败5次后,锁帐号的功能。

但后面发现,Laravel提供的安全还是不行,数据都是在裸奔,如下图所示:

万一中途xx路由器被入侵了。被人抓到这个包,本来就是http的,又是明文,太不安全了。所以这里做一个加密。

这里知识点比较多,涉及C/C++,OpenSSL、Qt等语言和框架,这里就简单说下思路和贴一些伪代码:

这里我用Qt将OpenSSL库封装成插件,提供下面的API功能:

Get请求:

  1. CJson *RSACipher::getResponse(QMap<QString, QVariant> parament)
  2. {
  3. CJson *json = new CJson;
  4. if(parament.contains("cmd")){
  5. QString cmd = parament.value("cmd").toString();
  6. RSASecret *rsa = RSASecret::getInstance();
  7. QList<QVariant> retVec;
  8. if(cmd == "publicKeys"){
  9. retVec = rsa->getAllPublicKeys();
  10. }
  11. else if(cmd == "privateKeys"){
  12. retVec = rsa->getAllPrivateKeys();
  13. }
  14. else if(cmd == "allKeys"){
  15. retVec = rsa->getAllKeys();
  16. }
  17. json->insertValue("data", retVec);
  18. }
  19. return json;
  20. }

Post请求:

  1. CJson *RSACipher::postResponse(QString body)
  2. {
  3. CJson *json = new CJson;
  4. QMap<QString, QVariant> map = CJson::JsonToMap(body);
  5. if(map.contains("cmd") && map.contains("data")){
  6. RSASecret *rsa = RSASecret::getInstance();
  7. int type;
  8. QString data = map.value("data").toString();
  9. if(map.contains("type")){
  10. type = map.value("type").toInt();
  11. }
  12. else{
  13. type = rsa->getLatestType();
  14. }
  15. //返回值都是Base64
  16. QString ret;
  17. if(map.value("cmd").toString() == "publicEncryption"){
  18. ret = rsa->publicEncrypt(type, data);
  19. }
  20. else if(map.value("cmd").toString() == "privateDecryption"){
  21. ret = rsa->privateDecrypt(type, data);
  22. }
  23. else if(map.value("cmd").toString() == "privateEncryption"){
  24. ret = rsa->privateEncrypt(type, data);
  25. }
  26. else if(map.value("cmd").toString() == "publicDecryption"){
  27. ret = rsa->publicDecrypt(type, data);
  28. }
  29. json->insertValue("type", type);
  30. json->insertValue("data", ret);
  31. }
  32. return json;
  33. }

Qt每小时生成RSA公钥和私钥,并且提供加解密的HTTP接口。

如下RSA公钥:

  1. {
  2. "data": [
  3. {
  4. "createTime": "https://cdn.jxasp.com:9143/image/2022-06-07 00:00:04",
  5. "publicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAph3ndB3WFpMTxxS3OHYl\ns6gZeSVxQt6ToVTYjIhPyb7PVoonTd+NQxx/iMn9txWlyxlnWqWNsDnuosScjcmY\nM4HiCyyk7bgECrs9MpuDK6EWuN97dpd95fA5iz+0N+yN5lVNM4fPNKseBpoFSF5Y\nWf3ee6uG7V7lwp2uJfh5RKKZ2c0qYGAZxE1HqBwAp64xatVKf3kB18g7TonWQFee\nPTEU/fKVXxklnL1U8DYUfuuPBUeLm92rq46Pi4xFTbri0mUZExKA9gTb9oMZi+xi\nivr0xx8KolbxBgoblqIgo+QfvwrFiJD0WTuzetCPfqkHFZwF/kPvpIS2eOwrpgfV\nnwIDAQAB\n-----END PUBLIC KEY-----\n",
  6. "ttl": 31444,
  7. "type": 0
  8. },
  9. {
  10. "createTime": "https://cdn.jxasp.com:9143/image/2022-06-07 01:00:04",
  11. "publicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5sHN780gMrXPOClxj74X\nVOovl8+BWIfPwkfFIDUUWYZCuZZozvsqSZ40l6qYh/Rd5BjZ3NqlHup+xR+u/9Jr\njEofvzJTOxHRIIP5UNRRhlw+BY7VpfOVBAtaaF5O9Ql3ujj/Uy2ApO6LGwsy6ONl\naVZ8UsIc42uGoVpGWDvt2r4NK27tSvW6R/yauggK/tnZsGefdf+nyudvS3wfPZ8Q\nhdgD4dwOO2DS7PX930pjqsUthf0lWsb+YmwNZSqWSOi03pZPYWlMnmgC/huONQZL\nz0hAFG12eAzdYmCAc8xh6Y10pJWL4LQEvfd6VJCel9ON1FQjeW2AVoDBOaEPivHQ\nzwIDAQAB\n-----END PUBLIC KEY-----\n\u0005\ufffd\u0001?\u0005E\r",
  12. "ttl": 35044,
  13. "type": 1
  14. },
  15. {
  16. "createTime": "https://cdn.jxasp.com:9143/image/2022-06-07 02:00:04",
  17. "publicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxUuaYHIblkeQvlyZnolx\nmhE08h9kSyrMuufB9KEj4Jy2dBy/qTJNhWcBEWNpGnzKimoTGd7RyMAbL0J5Nl1p\nBNv11J1WZiiE3+xRcbubUmjsDbr92o7m/HBhmPMtgxMKZ9S1dBU0kejxXrej2guG\n/nB3rlQ4CSjXnlWtx3s2DBB9ToxQLVkrLksqhnswFa85YFZVOCvCGvTGA4KD+djH\n3+YlLMSNNVyDJI3LtHtnhdi0Olp6eGVh8FDuMBXdJFX+9JCvTa5wsfNzKJD/xCPT\nSg9sEw3s60qZj0nP5s+UYWBElWjRytaxkM7CK5A3JQ8yJ2dM5JC4FP2mkc8xYs2/\nSQIDAQAB\n-----END PUBLIC KEY-----\n\ufffdg\u007f",
  18. "ttl": 38644,
  19. "type": 2
  20. },
  21. {
  22. "createTime": "https://cdn.jxasp.com:9143/image/2022-06-07 03:00:04",
  23. "publicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1SwuqUZPTcIwN2tNGhNX\nGg9Ks+xcWsjjxKwmRuIr/XeInSuzOmtzCfwVxYaqGixO3iLygq853oCtAxlyNQmj\nVrA9Meep4aGFu7TWvEDm1yRpf43vHRgIbnqYoIpWuUtWLgdNnBNS6utZOgt5RMlJ\n/RfHohFFIvM8fgzTD34iZ0IhtClqST0UX9ZLGZQwrTgLVOkxzszbUB8wbDxCFnVn\n7XUIxBVptyZC83/EZ4zwY6sN8GUXhhscfcLeu8rgjVVOANy7NtaYrzzhAy/aygg+\nB+y4ISIzNTq/LM5SsTX2EXhc+g9H0Ax865wt4uS6Aj75F67R/zOIP08vxudKjhsq\nMQIDAQAB\n-----END PUBLIC KEY-----\n",
  24. "ttl": 42244,
  25. "type": 3
  26. },
  27. {
  28. "createTime": "https://cdn.jxasp.com:9143/image/2022-06-07 04:00:04",
  29. "publicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyEG2hZu0/83P2UdTf4fv\nVtSoWXUgQlngMlWUXe59jW+hbvjv+fUfjlLz3USkBTrPRbFW9WXATuUNwMGn/zA8\n6W0D9EE8zhfd9Zt14St8xGIgBHR9Ptcg5FqKQbraG5wBxBdL0zWDXI7LL5zxSz9Q\niUKVrR4vgPj3FT/whuqLlGoEWf0ouCHAF7NDY89+X3InKhMROxea/hAAVCqqviLk\n9HvgpE/bGgiIY56pjJYGrThEyyCq1Rqf79lnAFRm1ukaoHzpvpwT+iNWu4pM6mQl\ncdVeQWFMhttps://cdn.jxasp.com:9143/image/2HJuMM2YB8UeU4jBEfxOCUeFX5k2z2DsJoVFhBF4ArFE8o+LWWi2pQb\nkwIDAQAB\n-----END PUBLIC KEY-----\n",
  30. "ttl": 45844,
  31. "type": 4
  32. },
  33. {
  34. "createTime": "https://cdn.jxasp.com:9143/image/2022-06-07 05:00:04",
  35. "publicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAki1pPjj42LND2zu7M0CY\nDEx+iZrUrzRFb8AbRyORYOOzkeELR3Mo2AVfASp6kThZFn7QsAku0drDW/ikCH4G\n3l2PkQ0VQWHnrqbFnAX89E1Q97wqGkeukWZTiD34RcFdktMzhMulhttps://cdn.jxasp.com:9143/image/2BYMtsKkHx+\nkwpm28wa9jCDrXQVy43gHBlujttWej0kQG3xaL21bxJyMieFMwSezN6JHxayUXYt\nzPl0phQ7Y4eUSIUyI9PDJL/aUgDfGvZ6sZWcy4h7xJ4SfJ0zrr2ljJOKBDTJQ8i6\ndWP4Ld7nSMSDnZ8u7Xt1q4hpS0ivNZUlPtBSuwA85wDN6JAyIGavKUXB7yopSsaF\nnwIDAQAB\n-----END PUBLIC KEY-----\n\ufffdg\u007f",
  36. "ttl": 49444,
  37. "type": 5
  38. },
  39. {
  40. "createTime": "https://cdn.jxasp.com:9143/image/2022-06-07 06:00:04",
  41. "publicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsokRVcyM+AJ6PiojFgHJ\nk4OUC0s597IqFQ/xviYUnldsWdI4h2zKdF2uWG/44jEia+YVX7XZNpOYBolLqILT\n+8kxuyvrcXFkIdZaPkhNVhZi3BEXT+kS3bpyrKXcovyZZtt8X4NAYp88E8oqvirl\nKNmd3p1ooSmALn5kER42VB4tfimaU5a4HK2RQpiiSQgIg0IE5u5jfuyZqjROG2On\nw5IUYx7UHhhlpD9VnQsfzd2vMJIwl+dDgX4qAFtqocWBxUxIHzwnJOKZhFo7z6ym\nVIjxy0TPAAVXQox14RYRAK/l+T2aywgz01E84wbtjNoCr+zOAZF09rkm5eri2CaU\noQIDAQAB\n-----END PUBLIC KEY-----\n",
  42. "ttl": 53044,
  43. "type": 6
  44. },
  45. {
  46. "createTime": "https://cdn.jxasp.com:9143/image/2022-06-07 07:00:04",
  47. "publicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1px/bv3imFjq6T1jsb6C\nqbRX8x7Q57yoGfQlE/d5QTb/AUtnSD/Lafp2fqk5U+vxiXnQmuGPGFO9n5ZPVw4H\nDF7kq565tv4tmkmYbtjJGzRt8EZG9jlT/vjUv2zG/xJFeTdZaz8E3MjkltOyC6A9\n0bpBo54m4nk7XH+H5gmtMIYEGiv1s8LnYvYSKfXncv/qCanEtz3QdcBSvgijUPEa\nBrLD0Mx3tEn0rXc14UACQuu5S+38GimN0dq5kGyLv+mjl0ykVPaQbAhTJ6APgoXd\nQAn2/PNSJzwIJ0RoPDs+2L0Yv1fTlfiifaf/sJ/RtfWemgtv/6/Tq81p7RoxCOiP\niQIDAQAB\n-----END PUBLIC KEY-----\n",
  48. "ttl": 56644,
  49. "type": 7
  50. },
  51. {
  52. "createTime": "https://cdn.jxasp.com:9143/image/2022-06-07 08:00:04",
  53. "publicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr+Q727M1Orqy/b+r2ZFr\n/Ychj9dy3vEY5U6UaLvCQmOqHwDq2qVGuB/A8uexxdOExKtOzJWn6SfRZfBDK7d4\n7itvAXAM6tYr52/MVaLbiiy1CNpqydx6I9Wgvs6n4BlAXz+oJUgzj4UpH9rUKpqp\nqm6idez2snpvFFghWsL7LqtgRjojxEYgECnhuIyuxd/Eq7OFM5i8FIGQYpvffD+Q\nbVcyJEYsdK967pC6hXJpQQ0egGhRT5FHlPt2oVBQhxYnBqVUHVNNdfWP2kDaRyhE\nChu1FdPn0nyOgq/G1eUGk3juhn5N5fQ/3NVQDKpFlLynjtUmmKugbrJ7XB6JP3jf\n6wIDAQAB\n-----END PUBLIC KEY-----\n",
  54. "ttl": 60244,
  55. "type": 8
  56. },
  57. {
  58. "createTime": "https://cdn.jxasp.com:9143/image/2022-06-07 09:00:04",
  59. "publicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyg8LztdfcF9jnK2vhpDi\ncBr+PdsDb49aIUaWoMO+5PqWWpEfp6PMJXNGOWRvFhHYQ3imDhahjPQAiYmTkoKr\nHpD3SaAEMKBqXN+m5hPqgsT1h/nZ563Dn9pxOI4bcbDFfITR1lWBBVQ1WKgqQaFp\nUkNrMBFDNLRby97xx4KKYPsAUqwK1uOx3qheV5rnfY7HjNFZqRUT6G1EhBzvwuRH\nqWBtuR1pOzH+6M9jkHnVNKdbBWpB/G8gmDj3PdZJ9LJPnkaCn6yYIOs5nL05aF6X\nga85m4+1t/ykqsgvbvzN62mFa79w0ZZ0JvybhBuDsGupknbktl5sFKbR1DEGNHgZ\n+QIDAQAB\n-----END PUBLIC KEY-----\n",
  60. "ttl": 63844,
  61. "type": 9
  62. },
  63. {
  64. "createTime": "https://cdn.jxasp.com:9143/image/2022-06-07 10:00:04",
  65. "publicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA02cdaXR/KqFejIOHpiln\ne9cmjXm+E17skWwIq5ACh315x2utx0fFbGM8ZOODLdpbVeCiULM5j9dKWb9iOdFD\nzYEUPm0bELGKKoS92pL66lUiaE6qedyasYsmUq29wtEIxjGzuBsJ/YIPyoldhr0S\nsBXV7YW0B42v0KZh6Z+kZqDNr4mRV/NUS58wjOgyJhs8ObMgGRHeo+vpK3C5tup1\n476pOK7YFyZpTaGv1eM1dTz148vUNDXiVK9CSrUFaEnqglcStG6RWxX0k8a9K4eC\nQhSEpNJOepUoPgS26psISKFE2NSeP6fKibBN56bvgCt8QNYmejh2l87nhPJgAftu\nRQIDAQAB\n-----END PUBLIC KEY-----\n\ufffdg\u007f",
  66. "ttl": 67444,
  67. "type": 10
  68. },
  69. {
  70. "createTime": "https://cdn.jxasp.com:9143/image/2022-06-07 11:00:04",
  71. "publicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvGbNy7XESflug6u3Hbw+\nq78DGOIcaolJoPFWdzWGsV5zmrJ5teYw/ammzHcseBemAHYhWpzmnbHPfxHT7EK9\nkQ4G5stBOcPS4vqr9ztwFGI4NPZsncF3jYMV+nIhfApx9rwKIaThUlpqyN+ySV/z\nMSjN1sCrwFr97xLUfX1YkRtHvMw4dmVdK9mmti19fVZ6lOtBnc5IKxK9rceS01PW\nO/tD60oc1GqaAmWGcSwnUZH1z91EhZiNSE7StwCrnYf7I9PnU44aCJVcMibs8mF/\n4WPxiWxHtB9kzItUSGi/Fq566kd4yOLPpJu15XxcUglRCSvYOYY18HIPxHv6fSF4\nwQIDAQAB\n-----END PUBLIC KEY-----\n",
  72. "ttl": 71044,
  73. "type": 11
  74. },
  75. {
  76. "createTime": "https://cdn.jxasp.com:9143/image/2022-06-07 12:00:04",
  77. "publicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4NJo7HIxs40HDNVn5DCT\nhSpVu8pFYesJTBmRzR4B0ZtOydJzm91gYKZKKdWUnPBeZJryrxV8YhpUj+Hc7sse\nhttps://cdn.jxasp.com:9143/image/2MfK8GOQxjvRLbhFQxlYkof9/t5VHioTLg5TZW8MUgw9xGruWUE2vwRZBMoy2pb\nVNlCCGm/kR+dq3g03fya2tYneAYUYL1zWKWsZ1sQSIsb7LCwUYAkLwsDNP1zQnIp\neIVuYfNEvOTqBHPMqBhovW9PIBzzlGCE8suUc4/Lff9cQz9Z2pWlECAY501y/NwX\nfF+qdR6rRrlurB+zBGLZ5BSWppU387+KnAPt3bzvF5mb4BF7jpqRpfpkxfh4mJBe\nnQIDAQAB\n-----END PUBLIC KEY-----\n",
  78. "ttl": 74644,
  79. "type": 12
  80. },
  81. {
  82. "createTime": "https://cdn.jxasp.com:9143/image/2022-06-07 13:00:04",
  83. "publicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2VCM9Hmrak8E3xr7jPTA\nIB2kujXvvo8G/hvChDJmrqfZcJ3XP+1hwe5dW9VMnQQe1ehHKUn5m8x1Mtb2SLEX\njR/kd4/Bt2JShfHD3FNochNhA2L/fS/fj8HbL4jYQ9l7vPCw+w8PeIXpRy50ebJG\nMAj2W97H4b795pY6eHrdlVddNADppYleyMBGbQho3M+5UUHrTnH5AIuvYZ3j+wSf\nJFsG1Zd369wbknleufxOrYbMNJ6mZcRWWJL6yq5a3A7w+hoq2xC4Zr+XplW9STTd\n3qliT+NXJ8uo2GfADFZJ1Pcvh4tWOscV9RPPLnYLTHETYXUtXlG0D2EyBCnYfrDA\n+QIDAQAB\n-----END PUBLIC KEY-----\n",
  84. "ttl": 78244,
  85. "type": 13
  86. },
  87. {
  88. "createTime": "https://cdn.jxasp.com:9143/image/2022-06-07 14:00:04",
  89. "publicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAo7N7X/lrW3O7T5aB26HM\nbZAFJEpEBQ366YRQcvWb9hezFX/tpNjS7qA5sUl2MqYr+4CnBik+7+tkGVTQxK96\nfQBtLQA9IMrNOv1db/ImG3jFShTO2aVWmrAHoeB5xp6USSvMVqeXpkdBs1PChxQq\nTrx498AGqHBU3oz9sTwVn0NjBNm2mfo8rol3rmf/bGNjamEzla3bjlqG1D/KG7RD\ntKeR4f/IVQzwY9KIa33ZIn1jhS/Gd6K19WzcB5rVBJpVDVatc82l4gA+xVk9liDQ\nMgIH+8Xqc8STwenwFqF3bDz28xNZ2YH9a19lFFavywlLTg09B1umKFZqs/WABTfZ\nrwIDAQAB\n-----END PUBLIC KEY-----\n",
  90. "ttl": 81844,
  91. "type": 14
  92. },
  93. {
  94. "createTime": "https://cdn.jxasp.com:9143/image/2022-06-07 15:00:04",
  95. "publicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvBP3pLhH89m+42avbnKm\nVdIv1mfqyUo/gND3Mrk/OIRtq5IXToNWmNDnjC4F51xY+Vms6By+Bii5hp8yUaZZ\nxBwOjVDfn4Sf7EyIHfaW3eWBhxN+wqJmE5iYg6aTjg71FynyzUelq0c/iTiYd9ZW\n5iDVZ+J4OueVoEKnDJx09IP1NFrL3EhidRrZRkoZHVHYuYz7IsdmzCNyg45aJilb\n07jKTteiazObp2ir4/Y/lGZc8d43hbXOf9Dyx+raARXO52BBGTWfnTvaTNhoUl2N\nZlga1N9RlHtxHKh3Uh8UGchSw4nEhpgSsGAE907ZXbL9QWpBiRdDCgvyRzgvYgzq\nIQIDAQAB\n-----END PUBLIC KEY-----\n",
  96. "ttl": 85444,
  97. "type": 15
  98. },
  99. {
  100. "createTime": "https://cdn.jxasp.com:9143/image/2022-06-06 16:00:03",
  101. "publicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA8OJAB89e7U3VDjtv9t5r\nOu/iqSDHl9HxKwWDWEoapL7iwXJFAfabwP8wiSbByzH+munl4QW49MZSgbu+8fTG\nG54Kn2MZA1gr+wJWeYzmcKD+aNxS+VHypOJkN6vr/lYPP8gIQ15rjApijt48VHAA\nf5BiQhNh5a5ovTidfIz4v0yj6qAVJWzUWuDSUbtB4SHzxdT62sYTVEUytCBX7EGO\nIzQwL8D7MebPw4eTuwnf9RrWgKCXmRlwLSdmO6tbkM79uG3HLvRIPv+04IYQo2Tr\nXtn5bhDzLLA6qqkSyrblTF140WJKJ4rrH41OAMicpP8bK6ZKVdG/1DDUnyhmiKyW\nGQIDAQAB\n-----END PUBLIC KEY-----\n",
  102. "ttl": 2643,
  103. "type": 16
  104. },
  105. {
  106. "createTime": "https://cdn.jxasp.com:9143/image/2022-06-06 17:00:03",
  107. "publicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtAMZsMHw7CPYPW25w6Wk\n9A6XTwVjo+YxWPPYcrA/z87TJQ2CC6daOL1ptU8Xa/fFcHb4hQTtRzdTbgZN/YOL\nNaOmzLSVInbQbvRu5MZVfAjM9Ih/G3sYyi+hra1mrRaYq/ltSABCu2sh8xN+5Xmf\nm0BLdOMyjrxBWwB+VSPMqMrWZ5cQfvl7HBRh2ikFKsmp34VCv/zVpEA0LphkX6QV\nQpls3kfTxP41XCT0hL4x/iLjxh1VkWmlJ0CRPLtP3K4+AiEj9dszYsNzty56bm1Y\nYKni2qCoWa45k7CdUjXxKmUOC3wEejlDjXSFVjYa+Y/hqA1AQOGm6VAwOb7wmVsG\n/QIDAQAB\n-----END PUBLIC KEY-----\n",
  108. "ttl": 6243,
  109. "type": 17
  110. },
  111. {
  112. "createTime": "https://cdn.jxasp.com:9143/image/2022-06-06 18:00:03",
  113. "publicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArit0fosZTOg8PHAlhE7Z\n9WkCXhRAWcnw5NxG8elMYkYANoQGszP9MJrUn8eX1i/3oDlfRcwh7L3jlCPX/sZ7\ndGMmA0zgJdWHmjUut7nAD0QBExtvdDoXYORTbR4Epwa6SVkOS3CIE5evJxltcKyI\njFUUTe58ZqX8dM+JisekOpVcaKcORUXjJ6bJoaOhpsNFUXvFaNmwpodKo6w6LD/Y\nry1TGIT+hQN6DabWhnpAH2cw+KfxNtemPKNcrYiZHjZa3pr3k8nqEgmDnqLSKOdv\nss1KCODl9KWLH2wDCt6uJkBJDA0uV3Eo5oChhOk0NH1uf4zcE3TaNvDzj6YGO+SC\nkQIDAQAB\n-----END PUBLIC KEY-----\n",
  114. "ttl": 9843,
  115. "type": 18
  116. },
  117. {
  118. "createTime": "https://cdn.jxasp.com:9143/image/2022-06-06 19:00:03",
  119. "publicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoVLbhs8twS/gk7Ojjb4d\nDBuDEFtyOP58jOF27N9eFTAbpRyeU6aBETlCVADUlVZvJ54Dj3+xBbOHYlvAsE3R\nvdWnEF778o/5cTiokEwiEbtO2pVlLn9u38UDvoIHQo0dmgpsw4sKUD1Z4KfH+wy4\n07km0xbxx5YGnmUaPUu0PGPKTAur5StjKE2h6M3rh4bcjH6s0cz1QozfjdBHmRdq\nAe1M+Lo9acrgNK4BrYyGp7iVVcqqS4nYZejDVk1gZON1rWEmoEj20cFLud9ctcCN\nVo5cBYYgOyA913WVlwRN4744AtXygfTVlsvPg1ju8Cao5P2LqcLL+ycarb+mJiBV\nrwIDAQAB\n-----END PUBLIC KEY-----\n",
  120. "ttl": 13443,
  121. "type": 19
  122. },
  123. {
  124. "createTime": "https://cdn.jxasp.com:9143/image/2022-06-06 20:00:03",
  125. "publicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0NxSo/ZB1cWANdKJZqwl\nvUMNEi9LrZhJaLNP3vExKR8nHdTA91AufL5+w+k8kHO2EpP6jnrGj94S6N6rOobt\nVhEHOBxzL4qn3PY4t23AcAbxGKQ2t8uujonV2cAgmhrP8CtOPzaSqF0iCtz6bqDV\n1tOdNcyvIli9ACywcQB7wFX+latT0iCTq7mY5EI26WV5tz+94hXTRG69wwO8Tzag\nltNhURrgC4DLSjY2Ow8GlxN+BbbYwuXwZF/JBFg4UesIOwa2eNs+ln5lmYYTlogb\n0kArp4rGee1buxEbWq9On58DK9bYXXuhp3E9TJrqiZFftNH5Ji9OCg8693SOe+mG\nvQIDAQAB\n-----END PUBLIC KEY-----\n",
  126. "ttl": 17043,
  127. "type": 20
  128. },
  129. {
  130. "createTime": "https://cdn.jxasp.com:9143/image/2022-06-06 21:00:03",
  131. "publicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6JsrGtvJK3aVIx/Fpk/B\n61mLi2ZgnxIK2SBehaKMCdbNqjP6KaRHY5GgA+lVqUHK9oJTKwBm3hAIEilA0hPe\n18dJvhhVR+YM1EaeyFudABwhF9sacNugduz9ciUi2iqsPeb5NVuj9dnNtz11A8c1\nf96wYbXnxDDrpdkSaFqs8/ZqIePw7JgZwckkgR8QMCjnl65DXOIsnsEX3eRYhfaJ\nD1o7nUL5JhaGCpQFBXHd0OcphB6TO9UzD9KxGsjF9briQcNXnML2iD9aEutC8ngA\n7dlPLV+8evcXH9lBIf2LVXsqlmd2nprpHkJpd1pRIilrEOHCEKS0/XTqlOKGov6f\nSQIDAQAB\n-----END PUBLIC KEY-----\n",
  132. "ttl": 20643,
  133. "type": 21
  134. },
  135. {
  136. "createTime": "https://cdn.jxasp.com:9143/image/2022-06-06 22:00:03",
  137. "publicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6U/tTGCeU+eCNx4uBD6x\nEoUos52SxQvDpOL3uCFqoslrWQs15MVdvc45f8okvIEwdoSk+L4A5b9NMzL4pvzG\nFxaZ31QRAHIOLqJzCFB7GwoeMbi39ey6TdIkr1zUzPT5+efYMFdoeaEEnQv6dThL\nUNwyIOQd0/ZAlj8BoECQ5acLYm2k2P9HVc007eq///AVDxHS26k34V8c5WyNYt/S\n/gkTh8nuVx681zvTlGL2RtHaymtH7TX3dh1vAXQfSps4jblctx1Il26xXrgpnJd5\npC3RIhi27IgV+OovFci/6DK2GsarMb0h33fngo7tsHeqphxjLkFyI5q4iaSb4o1A\nawIDAQAB\n-----END PUBLIC KEY-----\n",
  138. "ttl": 24243,
  139. "type": 22
  140. },
  141. {
  142. "createTime": "https://cdn.jxasp.com:9143/image/2022-06-06 23:00:01",
  143. "publicKey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvOw8KDJO9NYLp3TQ/cPU\nqSo0R9hAK+t0287l33ztBwD+gGAG/UBOoYTM8ouulZ5h2DaB0ehTPGk0PAJ3Tx+y\nSLwCxG2KQxqoGxnKNHGjUCS4edVGuxkGCO4zeHLXSD7eZEN2297kvAKsLZdvrUz8\nQJXQe6Qth9JIF9ghdpcDu/1qpVU1ilIBB1dHwbagzc4JkW4Q2/B+K7orzaqKJgq9\nqlyWRbXyaNBFOQX5DNLlOtlO38sdcGTdJTTwJ3EgJar1A++OknGguMIcSewxfVqX\nV+MXyL/zvifNsaY3tWE1tw7DkHJjRssLCiKj/E/zCxC43EpUS01AFwW+xf/GrFfK\nsQIDAQAB\n-----END PUBLIC KEY-----\n",
  144. "ttl": 27841,
  145. "type": 23
  146. }
  147. ],
  148. "time": "https://cdn.jxasp.com:9143/image/2022-06-07 15:16:00"
  149. }

然后将这个type和publicKey传给登录前端:

php代码:

  1. $client = new Client();
  2. $data = '';
  3. try{
  4. $res = $client->request('GET', 'http://127.0.0.1:8080/RSACipher?cmd=publicKeys');
  5. $data = json_decode($res->getBody()->getContents());
  6. }
  7. catch (GuzzleException $e){
  8. return response()->json("{}");
  9. }
  10. date_default_timezone_set('Asia/Shanghai');
  11. //拿前一个小时的数据
  12. $sub = date('H') - 1;
  13. return view('auth.login')->with('RSAModel', $data->data[$sub]);

前端代码:

  1. <input type="hidden" id="RSAType" name="type" value="{{$RSAModel->type}}" />
  2. <input type="hidden" id="RSAPublicKey" value="{{$RSAModel->publicKey}}" />

 在提交数据前调用JS对其进行RSA加密:

  1. <script src="https://cdn.bootcss.com/jsencrypt/3.0.0-beta.1/jsencrypt.js"></script>
  2. <script type="text/javascript">
  3. //用户登录
  4. function userLogin(){
  5. let password = $('#password').val();
  6. let publicKey = $('#RSAPublicKey').val();
  7. let encryptRSA = new JSEncrypt();
  8. encryptRSA.setPublicKey(publicKey);
  9. let RSAEncrypted = encryptRSA.encrypt(password);
  10. $('#password').val(RSAEncrypted);
  11. return true;
  12. }
  13. </script>

对应的HTML代码如下:

<form method="POST" action="{{ route('login.custom') }}" onsubmit="return userLogin()">

 

提交时只要带上加密好的password和对应的type。因为C++端是跑马灯的形式,有24个公钥私钥。需要指定是哪一个,才能解密。

后台验证时,当格式验证成功后,对password进行RSA解密。

  1. //密码RSA解密
  2. $rsaClient = new Client();
  3. $rsaDeData = '';
  4. try{
  5. $data = [
  6. 'data' => $request['password'],
  7. 'type' => $request['type'],
  8. 'cmd' => 'privateDecryption'
  9. ];
  10. $res = $rsaClient->request('POST', 'http:/127.0.0.1:8080/RSACipher', [
  11. 'body' => json_encode($data)
  12. ]);
  13. $rsaDeData = json_decode($res->getBody()->getContents());
  14. }
  15. catch (GuzzleException $e){
  16. return response()->json("{}");
  17. }
  18. $passwordDeBase64 = base64_decode($rsaDeData->data);
  19. $request['password'] = $passwordDeBase64;

然后就调用Laravel原始的用户认证就可以了:

  1. $credentials = $request->only('email', 'password');
  2. if (Auth::attempt($credentials)) {
  3. ......
  4. ......
  5. }
  6. ......

现在来抓下包来看看:

 

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载