Beercatsun 2023-06-08 23:04 采纳率: 0%
浏览 3

怎么样使用QR码纠错机制进行隐写。

我想要一个关于二维码隐写的程序。
需求是将原始二维码读取后进行改写。加入新的信息时候重写这个二进制流,并重新生成二维码。但是扫描的结果不能改变。
在解码的同时获取加入的新的信息(隐写部分)。

  • 写回答

1条回答 默认 最新

  • 0x0007 2023-06-08 23:41
    关注

    直接上代码吧:

    import qrcode
    from PIL import Image
    
    # 将信息写入二维码
    def write_qr_code(qr_code, data):
        # 将数据转换为二进制字符串
        binary_data = ''.join(format(ord(c), '08b') for c in data)
        
        # 获取二维码的像素矩阵
        qr_matrix = qr_code.get_matrix()
    
        # 将二进制字符串写入像素矩阵
        index = 0
        for i in range(len(qr_matrix)):
            for j in range(len(qr_matrix)):
                if qr_matrix[i][j]:
                    if index < len(binary_data):
                        bit = int(binary_data[index])
                        qr_matrix[i][j] = bit
                        index += 1
                    else:
                        break
    
    # 从二维码中读取信息
    def read_qr_code(qr_code):
        # 获取二维码的像素矩阵
        qr_matrix = qr_code.get_matrix()
    
        # 读取像素矩阵中的二进制字符串
        binary_data = ''
        for i in range(len(qr_matrix)):
            for j in range(len(qr_matrix)):
                if qr_matrix[i][j]:
                    binary_data += str(qr_matrix[i][j])
    
        # 将二进制字符串转换为文本
        text = ''
        for i in range(0, len(binary_data), 8):
            byte = binary_data[i:i+8]
            text += chr(int(byte, 2))
    
        return text
    
    # 生成二维码并写入信息
    qr_code = qrcode.QRCode(version=1, box_size=10, border=4)
    qr_code.add_data('原始信息')
    qr_code.make(fit=True)
    write_qr_code(qr_code, '加入的新信息')
    qr_code.make_image(fill_color='black', back_color='white').show()
    
    # 读取二维码并获取信息
    qr_code = qrcode.QRCode(version=1, box_size=10, border=4)
    qr_code.add_data('原始信息')
    qr_code.make(fit=True)
    text = read_qr_code(qr_code)
    print('原始信息:', text)
    text = read_qr_code(qr_code)
    print('加入的新信息:', text)
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 6月8日

悬赏问题

  • ¥15 软件供应链安全是跟可靠性有关还是跟安全性有关?
  • ¥15 电脑蓝屏logfilessrtsrttrail问题
  • ¥20 关于wordpress建站遇到的问题!(语言-php)(相关搜索:云服务器)
  • ¥15 【求职】怎么找到一个周围人素质都很高不会欺负他人,并且未来月薪能够达到一万以上(技术岗)的工作?希望可以收到写有具体,可靠,已经实践过了的路径的回答?
  • ¥15 Java+vue部署版本反编译
  • ¥100 对反编译和ai熟悉的开发者。
  • ¥15 带序列特征的多输出预测模型
  • ¥15 Python 如何安装 distutils模块
  • ¥15 关于#网络#的问题:网络是从楼上引一根网线下来,接了2台傻瓜交换机,也更换了ip还是不行
  • ¥15 资源泄露软件闪退怎么解决?