首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >密码学数据安全场景化研究--DNA结构回文序列与RSA加密结合

密码学数据安全场景化研究--DNA结构回文序列与RSA加密结合

原创
作者头像
太岁
修改2025-08-13 16:29:02
修改2025-08-13 16:29:02
2431
举报

(基于论文:Secure framework for IoT technology based on RSA and DNA cryptography ----Egyptian Journal of Medical Human Genetics

理论小芝士:

DNA回文序列:在分子生物学中,DNA回文序列(Palindrome Sequence) 是一种特殊的双链DNA结构,其特点是:两条互补链上的碱基序列在正读和反读时相同(需遵循碱基互补配对原则)示例:

代码语言:txt
复制
5'-GAATTC-3'  → 正读序列
3'-CTTAAG-5'  → 互补链反向序列(从右向左读:5'-GAATTC-3')

限制性内切酶识别:多数限制酶(如EcoRI)切割回文序列的中心位置。

代码语言:txt
复制
5'-G↓AATTC-3'  
3'-CTTAA↑G-5'   // 切割后产生粘性末端

(那么问题来了,多数限制酶切割后会产生粘性末端。这个时候为了避免玩家攻击出题人,我们还是要严谨一点的,所以有没有方法可以去掉粘性末端呢?有的,兄弟,有的)

平末端切割
  • 切割特点:在回文序列的对称中心点同时切断双链,产生平整末端

常见平末端回文序列:

限制酶

识别序列

切割位置

EcoRV

GATATC

GAT↓ATC

SmaI

CCCGGG

CCC↓GGG

HaeIII

GGCC

GG↓CC

这样一来,我们的题目就可以不用给什么c1,c2,n1,n2这些的了,全部写在一条链子上,中间用回文序列切割就可以了,到时候题目就给一根长DNA链子,嘻嘻

出题思路:

方法一: 按规则转换四进制数字 → DNA碱基:(0 → A, 1 → T, 2 → C, 3 → G)然后按RSA开打,信息用回文序列分割

方法二: DNA是二进制映射 → ATCG → 00 01 10 11 后续同上

方法三: 给出另一条DNA单链,要求用原来的DNA链(碱基互补配对)后续同上

方法四: 众所周知(其实我不知道,早忘了),DNA合成蛋白质的过程中,识别的是3个一组一组的(ATC,CCG,TCA)这样,用密码子去读,所以我们不妨拓展思路,以DNA编码合成的蛋白质链作为

代码语言:txt
复制
AUG → 甲硫氨酸(Met,起始密码子)
UAA, UAG, UGA → 终止密码子(不编码氨基酸

难点:阅读框偏移,不固定开头起始位置,需要玩家自己去找AUG(密码子),但可能出现多个AUG,需要每个都试试

用最简单的方法一来示范一下:

就拿最简单的RSA举例:

代码语言:txt
复制
from Crypto.Util.number import *
import gmpy2

flag = b"flag{Test123!}"
p = getPrime(128)
q = getPrime(128)
n = p * q
e = 65537
phi = (p-1)*(q-1)
d = pow(e, -1, phi)
m = bytes_to_long(flag)
c = pow(m, e, n)

def int_to_dna(num):
    quat = gmpy2.digits(num, 4)  # 转换为四进制
    mapping = {'0': 'A', '1': 'T', '2': 'C', '3': 'G'}
    return ''.join(mapping[d] for d in quat)

# 转换为DNA格式
e_dna = int_to_dna(e)
n_dna = int_to_dna(n)
c_dna = int_to_dna(c)

output = e_dna + "CCCGGG" + n_dna + "CCCGGG" + c_dna
print("DNA Output:")
print(output)

output:

代码语言:txt
复制
DNA Output:
TAAAAAAATCCCGGGCAGGAGACAGGTATTAAGGCTTTTACGGTGATCACCTGTACAAAGTCGCGTATTTTACATAGATCTATGAGACGATAGCGCATCAGTAAGACATCGTGGTATAGAATCCTTAACACAGCTAGTCGGCGCCCGGGTTTTTTAGGTAGTTCACTCGTTCAGCGTCCCTCCGTGTCGTGTCAGCTGGCCGCGCAATCGAAAACTGAAGTTTTGCGTTACACTTTGCCGCCCGAACTCAGCGCTATATGTCGTTAAGGTGATTCTA

然后解密:

具体解密脚本就不展示了,反正逆起来很简单
具体解密脚本就不展示了,反正逆起来很简单

效果还是不错的

到这里,理论成立,可以开始出题了,基本上大部分的RSA题目都可以用这个逻辑套用。目前用这个思路出了一些题,但是比赛还没打,等打完这边会出WP,具体细节届时再补充完善,求求关注喵

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 理论小芝士:
  • 出题思路:
    • 用最简单的方法一来示范一下:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档