RAS加密 - 二

这次遇到的登陆加密着实费了些功夫,我都想着用phantomjs来解决登陆然后拿到cookies了,这次使用了fiddler抓包了

首先登陆时发现密码加密了,还多了些参数:

在fiddler全局搜索guid,发现是上一个请求里的:


接着找密码加密的部分:


一般来说加密部分都在自己写的js里,所以就不看jquery开头的部分,点击VM919.formatted:74:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RAS-3072(也称为RSA-3072)是一种非对称加密算法,用于加密和解密数据。以下是使用 C++ 实现 RAS-3072 加密和解密的基本步骤: 1. 生成公钥和私钥 首先,需要生成一个公钥和一个私钥对。公钥用于加密数据,私钥用于解密数据。生成公钥和私钥的步骤如下: - 选择两个大素数 p 和 q,使得它们的积 N = p * q 非常大(通常在几千位以上)。 - 计算欧拉函数 φ(N) = (p-1) * (q-1)。 - 选择一个小于 φ(N) 且与 φ(N) 互质的整数 e,它将作为公钥的一部分。 - 计算 e 的模反元素 d,它将作为私钥的一部分。d 满足以下条件:d * e ≡ 1 (mod φ(N))。 2. 加密数据 一旦公钥和私钥被生成,就可以使用公钥来加密数据。加密的步骤如下: - 将要加密的数据转换为一个整数 m,该整数应小于 N。 - 计算 c ≡ m^e (mod N),其中 e 是公钥中的指数。得到的 c 是加密后的数据。 3. 解密数据 一旦加密的数据需要被解密,就可以使用私钥来解密数据。解密的步骤如下: - 将加密后的数据 c 转换为一个整数。 - 计算 m ≡ c^d (mod N),其中 d 是私钥中的指数。得到的 m 是解密后的数据。 下面是使用 C++ 实现 RAS-3072 加密和解密的示例代码: ```cpp #include <iostream> #include <vector> #include <random> #include <chrono> #include <gmpxx.h> using namespace std; // 生成随机大素数 mpz_class generate_prime(int num_bits) { random_device rd; mt19937 gen(rd()); uniform_int_distribution<mpz_class> dist(mpz_class(1) << (num_bits-1), mpz_class(1) << num_bits); while (true) { auto p = dist(gen); if (mpz_probab_prime_p(p.get_mpz_t(), 25) > 0) { return p; } } } // 生成公钥和私钥 void generate_key(mpz_class& N, mpz_class& e, mpz_class& d, int num_bits) { auto p = generate_prime(num_bits); auto q = generate_prime(num_bits); N = p * q; mpz_class phi = (p - 1) * (q - 1); while (true) { e = generate_prime(num_bits); if (gcd(e, phi) == 1) { break; } } mpz_invert(d.get_mpz_t(), e.get_mpz_t(), phi.get_mpz_t()); } // 加密数据 mpz_class encrypt(mpz_class m, mpz_class N, mpz_class e) { mpz_class c; mpz_powm(c.get_mpz_t(), m.get_mpz_t(), e.get_mpz_t(), N.get_mpz_t()); return c; } // 解密数据 mpz_class decrypt(mpz_class c, mpz_class N, mpz_class d) { mpz_class m; mpz_powm(m.get_mpz_t(), c.get_mpz_t(), d.get_mpz_t(), N.get_mpz_t()); return m; } int main() { // 生成公钥和私钥 mpz_class N, e, d; generate_key(N, e, d, 3072); // 要加密的数据 string plaintext = "Hello, world!"; mpz_class m(plaintext.c_str()); // 加密数据 auto c = encrypt(m, N, e); cout << "Encrypted: " << c.get_str() << endl; // 解密数据 auto decrypted = decrypt(c, N, d); cout << "Decrypted: " << decrypted.get_str() << endl; return 0; } ``` 需要注意的是,RAS-3072 是一种非常复杂的加密算法,实现起来也比较复杂。如果需要使用加密算法来保护敏感数据,请务必仔细考虑安全性和实现细节。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值