DL_T_860_10-2018 电力自动化通信网络和系统 第10部分:一致性测试
2025-05-17 14:54:41 19.32MB DL860 IEC61850
1
### Miller-Rabin素性测试算法 #### 概述 Miller-Rabin素性测试是一种用于判断一个整数是否为素数的概率性算法。该算法在密码学领域应用广泛,尤其是在RSA公钥加密算法中扮演着重要角色。RSA算法的安全性很大程度上依赖于大素数的选择,而Miller-Rabin算法因其高效性和准确性成为检测大素数的理想工具。 #### 原理与步骤 Miller-Rabin素性测试基于以下事实:如果一个奇合数n可以表示为n = d * 2^r + 1(其中d为奇数),那么对于任意a(1 < a < n-1)存在两种情况: 1. \( a^d \equiv 1 \) (mod n)。 2. 存在一个j(0 ≤ j ≤ r-1)使得 \( a^{d*2^j} \equiv -1 \) (mod n)。 如果对多个随机选择的a都满足以上条件之一,则n很可能是素数。反之,如果找到任何一个a不满足上述任一条件,则n一定不是素数。 #### C语言实现分析 根据提供的部分代码示例,我们可以看到这是一个简化版的Miller-Rabin素性测试算法实现。下面将对该代码进行详细分析: ```c #include #include // 函数定义:计算 i^d mod n int mod(int i, int d, int n){ int c = 1; while(d > 0){ if(d % 2 == 0){ // 如果 d 是偶数,则更新 d 和 i d = d / 2; i = (i * i) % n; } else { // 如果 d 是奇数,则更新 d 和 c d--; c = (c * i) % n; } } return c; } int main(){ int i = 2, d, n = 78779; d = n - 1; while(d != 1){ if(mod(i, d, n) == 1){ if(d % 2 != 0){ printf("Not prime"); break; } d = d / 2; if(mod(i, d, n) == n - 1){ printf("Not prime"); break; } else { printf("Composite: %d", mod(i, d, n)); break; } } } if(d == 1){ printf("Prime"); } return 0; } ``` 1. **函数mod**:实现快速幂模运算 \( i^d \mod n \),通过循环不断平方和取模来减少计算量。 2. **主函数main**:初始化变量,并通过循环来检查d是否为奇数或者是否能被2整除。如果 \( a^d \equiv 1 \) (mod n) 或者 \( a^{d*2^j} \equiv -1 \) (mod n),则n可能为素数;否则n一定是合数。 #### 优化与改进 虽然上述代码提供了一个基本的实现框架,但在实际应用中还需要进一步优化和完善,例如: - 使用更高效的循环结构和条件判断。 - 实现多轮随机测试,以提高测试的准确性。 - 对输入值进行预处理,例如排除明显的非素数(如偶数)。 #### 结论 Miller-Rabin素性测试算法是现代密码学中一种非常重要的技术,尤其在RSA等公钥加密算法中有广泛的应用。通过对该算法的理解和掌握,可以更好地应用于密码学、信息安全等领域中的实践问题解决。
2024-10-31 13:43:59 833B Miller-Rabin 素性测试
1
软件可靠性测试及其实践[2]软件测试(3)测试环境的准备:为了得到尽可能真实的可靠性测试结果,可靠性测试应尽量在真实的环境下进行,但是在许多情况下,在真实的环境下进行软件的可靠性测试很不实际,因此需要开发软件可靠性仿真测试环境。比如,对  软件可靠性测试及其实践[2] 软件测试  (3)测试环境的准备:为了得到尽可能真实的可靠性测试结果,可靠性测试应尽量在真实的环境下进行,但是在许多情况下,在真实的环境下进行软件的可靠性测试很不实际,因此需要开发软件可靠性仿真测试环境。比如,对于多数嵌入式软件,由于与之交联的环境的开发常常与软件的开发是同步甚至是滞后的,因此无法及时进行软件可靠性测试;有些系统
2024-10-09 14:46:52 42KB
1
ACP-HPC-HP的缓存一致性测试
2024-06-27 16:02:38 131.44MB
1
下载前必读!!!!!! 1.此代码是matlab代码,用的实例是Lorenz系统 2.此代码是图片格式,需要读者自行敲打键盘 3.若你们不想手敲键盘,我可代敲,具体私聊 其他说明: SP800-22测试是NIST发布的一项特殊出版物,目的是评估随机数生成器的质量和随机性。这些测试方法可以用于各种各样的随机性检测场景,并且是各种安全标准和规范的基础。 SP800-22测试提供了一系列统计测试和随机性分析,用于检查生成的随机数序列是否具有良好的统计特性和随机性。其中包括频次测试、卡方测试、最长序列测试、游程测试、秩测试等。
2024-05-27 11:13:15 2.79MB matlab
1
本文档介绍了LPDDR4的信号完整性测试指导,内含有详细的指导操作,包括如何在实际测试出的读写信号的建立时间、保持时间等时序值。
2024-03-29 16:21:48 4.1MB 信号处理 数字信号处理 单元测试
1
IEC60870-5-101规约主要用于电力SCADA数据监控采集系统主站和子站之间传输报文,由于该报文主要采用“帧校验和”的方式,其安全性较低,存在中间人攻击的安全隐患。为了验证该101规约的通信存在问题,构建了馈线终端FTU与主站的通信系统,在云服务器上采集FTU移动物联卡的遥测信息,利用中间人攻击方式,采用 ARP 欺骗截获通信数据分组,解析数据分组中的遥测信息,尝试数据篡改并成功使监控端数据得不到及时更新,最后提出了一种基于Hash签名的101规约安全机制。
2024-03-18 20:27:37 1.14MB
1
这项研究的重点是在LHC质子-质子碰撞中产生的硬衍射事件,在最终状态下显示一个完整的质子,可以用前向探测器进行标记。 我们报告了针对此类事件测得的W玻色子电荷不对称性的前瞻性结果,从而可以限制波美隆中的夸克衍射密度函数。
2024-03-01 20:05:11 1.07MB Open Access
1
Beta作为一种基于股票市场价格的风险度量,已经在强势,半强势和弱势市场中进行了广泛的辩论和研究。 已经证明,既没有负值也没有异常β。 过去的研究在研究beta及其行为时很少考虑前沿市场和婴儿市场,例如达累斯萨拉姆证券交易所(DSE)。 通过从DSE数据库中提取的2018年连续246天交易期内17家公司的相应收盘价,本研究通过测试股票和投资组合的回报率和敏感性来检查婴儿市场的交易频率异常。 通过计算DSE交易股票的beta,这项研究发现了许多异常情况。 股票显示不像债券那样频繁交易。 价格在短时间内保持不变,有时股票根本没有交易。 由于波动很小,这些股票表现出异常行为,有时会导致beta值为负。 我们得出结论,这可能是由于两个主要原因。 首先,东非投资者和公众对股票市场了解不足,其次,市场还很年轻,交易平台和基础设施还不完善。 因此,我们建议决策者通过考虑这项研究的结果来优化该地区的股票交易。
2024-01-14 16:43:07 591KB 行业研究
1