差错检测

差错检测的原理

在这里插入图片描述

差错编码分为检错码纠错码

对于检错码,如果编码集的汉明距离d=r+1,则该差错编码可以检测 r 位的差错
汉明距离 : 对应位数不同的个数
编码集的汉明距离 :相互之间最小的汉明距离
在这里插入图片描述两两编码之间最少有2位不同,因此编码集的汉明距离d = 2,可以**100%**检测到1位错误

对于纠错码,如果编码集的汉明距离d=2r+1,则可以纠正r位的差错
在这里插入图片描述

典型校验方法

奇偶校验
  1. 1比特奇偶校验 : 1个校验位
    只能够实现所有奇数位的差错检测或偶数位的差错检测,因此检测成功率为50%
  2. 二位奇偶校验
    检测所有的奇数位差错、部分偶数位差错
    纠正同一行/列的奇数位差错,行列交叉点翻转即可
校验和

发送方
1.将数据看做是16位的二进制“整数序列”,计算所有整数的和,进位加在和的后面,将得到的值按位取反,得到校验和
2.将校验和放入校验和字段
接收端
1.计算所受到的段的校验和
2.将其余校验和字段做对比
若不相等 :则检测出错误
若相等 : 没有检测出错误==(可能有错误)==

计算注意
校验和的计算中,最高位不进位,如果进位则加到最低位在这里插入图片描述

CRC编码
  1. 将数据比特,D,视为一个二进制数
  2. 选择一个r+1的比特模式,G
  3. 选择r位的CRC比特,R,满足 <D,R>能够被G整除
  4. 检错:用接收到的整体数据除以G,余数为0则无错,否则有错
特点

可以检测所有突发长度小于r+1位的差错

解题过程
  1. 根据多项式,得到r+1位G
    如 多项式为 x4+x3+x+1 , 可以得到G: 11011
    多项式对应G:x的阶数,存在xn(n>=0),则第n位为1
  2. 根据G的位数,得到应该在传输数据后添加的位数r
  3. 计算 D*2r 摩尔除以 G的余数,r位余数为R

摩尔除注意事项:

  • 位之间运算为异或
  • 判断是否可除,只需要与除数位数匹配即可,不需要判断大小关系
    例如 :
    在这里插入图片描述
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于凯撒密码的差错检测,可以使用一种简单的方法。凯撒密码是一种替换密码,它通过将字母按照给定的偏移量进行替换来加密消息。 为了检测差错,可以尝试解密密文消息,并与原始消息进行比较。如果解密后的消息包含了明显的错误或不合理的内容,那么就可以确定可能存在差错。 下面是一个示例代码,用于实现凯撒密码的差错检测: ```python def caesar_decrypt(ciphertext, shift): plaintext = "" for char in ciphertext: if char.isalpha(): ascii_offset = ord('A') if char.isupper() else ord('a') decrypted_char = chr((ord(char) - ascii_offset - shift) % 26 + ascii_offset) plaintext += decrypted_char else: plaintext += char return plaintext def error_detection(ciphertext, max_shift): original_message = "你的原始消息" for shift in range(1, max_shift+1): decrypted_message = caesar_decrypt(ciphertext, shift) # 检查解密后的消息是否合理 if decrypted_message == original_message: print(f"可能的偏移量: {shift}") return print("未找到可能的偏移量") # 示例用法 ciphertext = "加密后的消息" max_shift = 25 # 偏移量的最大值 error_detection(ciphertext, max_shift) ``` 在这个示例代码中,`caesar_decrypt` 函数用于解密凯撒密码,`error_detection` 函数用于检测差错。你需要将 "你的原始消息" 替换为你的实际原始消息,并提供加密后的消息和偏移量的最大值。程序会尝试不同的偏移量进行解密,并与原始消息进行比较,如果解密后的消息与原始消息相同,则输出可能的偏移量。 请注意,这只是一种简单的差错检测方法,并不能保证找到所有可能的偏移量。对于更复杂的密码或更高级的差错检测方法,可能需要使用更高级的技术和算法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值