Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何让swift不返回加盐的密码文本,而是返回未加盐的密码文本?_Python_Ios_Swift_Encryption_Rsa - Fatal编程技术网

Python 如何让swift不返回加盐的密码文本,而是返回未加盐的密码文本?

Python 如何让swift不返回加盐的密码文本,而是返回未加盐的密码文本?,python,ios,swift,encryption,rsa,Python,Ios,Swift,Encryption,Rsa,我有一个swift应用程序,它使用RSA公钥将数据发送到python服务器,并让服务器使用服务器私钥解密数据。但是,swift每次返回不同的密码文本。有没有办法不加盐 我曾尝试使用SwiftyRSA和SwiftUtils来实现加密,在向其他人寻求帮助的同时,swift似乎会自动添加消息 override func viewDidLoad(){ .... 做{ let data=“\(message!)”。数据(使用:String.Encoding.utf8)! //用于访问密钥链中存储的公钥的标

我有一个swift应用程序,它使用RSA公钥将数据发送到python服务器,并让服务器使用服务器私钥解密数据。但是,swift每次返回不同的密码文本。有没有办法不加盐

我曾尝试使用SwiftyRSA和SwiftUtils来实现加密,在向其他人寻求帮助的同时,swift似乎会自动添加消息

override func viewDidLoad(){
....
做{
let data=“\(message!)”。数据(使用:String.Encoding.utf8)!
//用于访问密钥链中存储的公钥的标记名
让TAG_PUBLIC_KEY=“com.example.keyPublic”
让encryptStr=“加密的消息=”
让encryptStrData=encryptStr.data(使用:String.Encoding.utf8)!
让keyString=getkeystringfrompmstring(PEMString:“”
-----开始公钥-----
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-----结束公钥-----
""")
让encryptedData=尝试RSAUtils.encryptWithRSAPublicKey(数据:data,pubkeyBase64:keyString,标记名:TAG\u PUBLIC\u KEY)!
让长度=encryptStrData.count+encryptedData.count
变量数组=[UInt8](重复:0,计数:长度)
encryptStrData.copyBytes(收件人:&数组,计数:encryptStrData.count)
encryptedData.copyBytes(到:&array+encryptStrData.count,计数:encryptedData.count)
var st=“”
对于encryptedData中的字节{
st+=字符串(格式:“%02X”,字节)
}
打印(“加密邮件”)
印刷品(st)
}
抓住{
打印(错误)
}
...
//键功能-删除页眉和页脚
func getKeyStringFromPEMString(PEMString:String)->String{
让keyArray=PEMString.split(分隔符:“\n”)//删除新行字符
var keyOutput:String=“”
对于keyArray中的项{
如果!item.contains(“----”{//示例:-----开始公钥-----
keyOutput+=项//将文本作为单个字符串连接在一起
}
}
返回键输出
}
....
}
从Crypto.PublicKey导入RSA
从加密导入随机
从base64导入B64解码
def decText(encTest):
random_生成器=random.new().读取
key=RSA.generate(2048,随机_生成器)
以open('private.pem','r')作为f:
key=RSA.importKey(f.read())
rawCipherData=B64解码(加密测试)
解密=密钥。解密(加密测试)
打印(解密)
返回解密
这是明文。
33BA884D57161DF955DE45C50E3BBA69C83233402BF460906B919BC0806B44356112B6E0B8DD8F2F5804DB527E996BA91E91015915F03D0292D89B7ECFC3C44

这是密文
0C344863CBC6A4D9153C275DE2074C097A153BFBFD2A34F5312FED4BB075FF28DC3CC584A31CBBD1DCCBBFC18417C1B624B9312F67703817B478DBD07A59CD59E62831A833F5F5ECA07A94C7E555DB59C4F204FA92DE4C79106FFA6427B8D49ECAC0E962F8467BD5256239DC96ABF0D6101377B8A00F3581D87C234667AEB780B780CFC5805CFC5809CFC5080B780CFC5080DC080B780D7B780CFC5080DC080B780D7B780B780D7B780DC070CFC5080B780B780B780D7B780B780B780B7808D059D2F123D0D5A89D21D5202D25F558D47821875CAFDAC733A45F53DEFA69CCDD12D50005914E6105C5C055CC4531822862A5A5A581D0D5FF1EE593A168390319D2466AB0A939C546DAF919979A177FB4288之前

以下是python使用此密码文本输出的十六进制值:
A8 AB FA EF FE 71 7E 3E 19 C0 02 AC 08 7E 0C 0C 01 50 A6 34 85 E2 F1 6D 36 DD 30 B2 FA BC A0 64 B8 C2 A0 3E 40 A7 9A A3 C7 05 E1 55 AD CE 61 64 33 0A 89 30 A4 86 55 74 F3 3F 37 45 B6 AC 81 26 41 B1 69 A3 0A FC 30 38 5A 03 D86 45 55 9F 5C 6A 12 E7 0C 08 D8 08 E 84 48 25 F6 0E CD 22 3A DC AE C6 0B F1 52 99 49 E4A1 50 D9 FC 93 5B BC E1 D2 E4 5F CF 83 77 2E D5 87 67 08 3E 80 0B AF 9B 6E 30 37 50 61 0E 21 9E DB 6A A0 01 93 D4 C8 9D EF E9 27 BD BB 36 2F 07 FA 9C 5F D3 42 42 42 48 00 35 B0 11 24 DD 45 83 D1 C2 80 2D B1 B3 DF E7 9E D3 90 2F 60 C7 14 25 20 28 73 BC AB 75 27 22 C2 B3 E0 46 1D C2 99 C5 85 F5 D2 A3 42 5A 49 2B FC E46C 1D D1 2F 27 D3 CF 75 63 41 C5 5A 26 BC 56 EB A3 28 59 A4 32 61 82 A4 2E 41

我看到了编码和解码的区别

在Swift加密代码中,加密似乎输出:

hex_encode( "encrypted_message=" + encrypt( data ) )
当python正在执行

base64_decode( ciphertext )

如果还有其他内容,则需要提供可工作且可验证的代码示例、使用的输入和获得的异常

RSA填充具有随机部分,因此加密返回随机密文是正确的。如果没有填充,RSA是严重不安全的,那么我应该如何解决这个问题?有没有办法让python处理这个问题?没有什么需要修复的,这是设计上的,您不应该更改它(您可以使用静态填充实现自己的RSA加密,但我强烈反对这种愚蠢行为)。如果密文是随机的,它将解密相同的明文。也许如果你更新了你的问题并解释了为什么你想要静态输出,有人可以帮助你实现你的目标(甚至是其他方式)。关键问题是python脚本不会解密密文。这就是我所指的问题。它不会将密文解密回明文。您会收到什么异常?在python脚本中,您是否切断了带前缀的文本
encrypted\u message=
?我看到swift代码正在进行十六进制编码,但是python base64 Decoding这里是我正在使用的一个类文件@问题不在于加密本身,而在于如何对数据进行编码和解码。您需要使用相同的算法,并且不添加额外的文本。您需要使用相同的编码(十六进制或base64,保持不变)。跳过这段花哨的文字谢谢!这就是问题所在,我现在让它工作了,唯一的问题是它抛出了很多垃圾数据,我必须清除这些数据,但是我可以从那里分割文本并工作。