小编Ase*_*ian的帖子

比较两个非常大的数字时Python不一致的错误

我是python的新手,我正在编写一个安全的ftp服务器/客户端来处理文件的基本上传/下载(但加密).

为确保客户端具有密钥,我加密并发送随机的32字节数.客户端必须解密该号码,添加一个,重新加密,然后将其返回给服务器.服务器检查响应是否为随机数+ 1,然后在它们等效的情况下继续连接.问题是这种方式在90%的情况下起作用,但有时会失败(即使客户端发送了良好的响应).

if int.from_bytes(challenge, "big") + 1 == int.from_bytes(response, "big"):
    print("Good\nExpected: {0}\nReceived: {0}".format(
        int.from_bytes(challenge, "big") + 1,
        int.from_bytes(response, "big")))
else: 
    print("Bad\nExpected: {0}\nReceived: {0}".format(
        int.from_bytes(challenge, "big") + 1,
        int.from_bytes(response, "big")))
Run Code Online (Sandbox Code Playgroud)

10次​​中的9次,这进入True状态,​​但有时会失败.这些是失败时的例子:

Bad
Expected:
65159048323870645118410560973513118036375130115063959378348917255680432299875
Received: 
65159048323870645118410560973513118036375130115063959378348917255680432299875

Bad
Expected:
94602782648778784750235610259612519850690550920952731294858863927077528757933
Received:
94602782648778784750235610259612519850690550920952731294858863927077528757933
Run Code Online (Sandbox Code Playgroud)

请注意,上述预期和收到的每一个实际上都是相同的.

以下是一些成功的数字示例:

Good
Expected:
91751260209520864629218443027060768890746721638897648279482154562044918570881
Received:
91751260209520864629218443027060768890746721638897648279482154562044918570881

Good
Expected: 
104504930179798203375748204555227260444250367405369759767776407892919812999121
Received:
104504930179798203375748204555227260444250367405369759767776407892919812999121
Run Code Online (Sandbox Code Playgroud)

知道发生了什么事吗?谢谢你的时间.编辑:代码段:

服务器端:

challenge = os.urandom(32)
socket.send_msg(challenge, encrypt=True)
response = socket.recv_msg(32, decrypt=True)

if int.from_bytes(challenge, "big") + 1 != int.from_bytes(response, "big"):
    print("Expected: {0}\nReceived: {0}".format(int.from_bytes(challenge, "big") + 1, …
Run Code Online (Sandbox Code Playgroud)

python

7
推荐指数
1
解决办法
95
查看次数

C: Linux内置链表在内核数据结构中的使用

我正在尝试向我的linux内核添加系统调用,当我修改task_struct(通过添加链表)时,使用内置链表会很有利,并且task_struct已经有相当多的struct list_head了在那里用于其他目的。为了统一,我想坚持使用这种数据结构。

我的问题是我真的不完全理解如何使用这个结构。例如,我看到他们有“struct list_head Children”。然而,这个结构的实现很简单,就是“*next”和“*last”。

我在网上查看了示例,每个人都说,好吧

struct node{
    int data;
    struct list_head list;
}; 
Run Code Online (Sandbox Code Playgroud)

但这是否表明我应该包含在我的 task_struct 中的数据结构应该是

struct node list;
Run Code Online (Sandbox Code Playgroud)

我不太明白如果我使用 list_head,我将如何初始化结构以包含我希望它包含的数据。

本质上,我想添加系统调用的链接列表,并以 char* (可读格式)链接列表的形式将它们添加到进程中。

目前,获取系统调用信息的语义并不重要......我只需要弄清楚如何让链表与task_struct一起工作。

编辑:例如我想做的事情:

我已经获得了函数执行的系统调用的列表。我将它们保存在单独的 char* 变量中。我想在进程 task_struct 中添加一个列表来跟踪所有这些系统调用。

例如

进程“abc”调用 printf ~> 相当于“WriteScreen” getchar ~> 相当于“ReadKey”

我现在有一段包含这两个字符串的用户态代码。我调用一个系统调用,我将编写该系统调用(每个标记一次),以使用这些系统调用“标记”进程。

两次调用后,'abc'的task_struct有一个列表

abc->task_struct->tag_list

该列表包含“WriteScreen”和“ReadKey”。

稍后我将使用这些标签来打印调用了 WriteScreen、ReadKey 等的进程列表。这些的实现将在我了解如何使用列表来正确存储附加到进程的字符串后进行。

c kernel linux-kernel

5
推荐指数
1
解决办法
4806
查看次数

无法在对象资源管理器中查看已创建的表 - Microsoft SQL Management Studio

我试图在数据库中创建一些表,但是这些表没有出现在我的对象资源管理器视图中.

我的代码如下:

use testDB
GO

create table dbo.teacher (id varchar(5), name varchar(24));
insert into teacher values ('dm112', 'Magro, Deirdre');
insert into teacher values ('je232', 'Elkner, Jeff');
insert into teacher values ('cm147', 'Meyers, Chris');
insert into teacher values ('kr387', 'Reed, Kevin');


create table dbo.course (
    number varchar(6),
    name varchar(24),
    credits int,
    teacherid varchar(6) 
);
insert into course values ('SDV100', 'College Success Skills', 1, 'dm112');
insert into course values ('ITD110', 'Web Page Design I', 3, 'je232');
insert into course values ('ITP100', 'Software …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server

5
推荐指数
1
解决办法
2万
查看次数

如何根据R中的另一个数据帧重命名数据帧的所有列?

我是R.的新手.我正在尝试根据另一个数据帧重命名数据框的列.

基本上我的数据看起来像

DataFrame1

A    B    C   D
1    2    3   4
Run Code Online (Sandbox Code Playgroud)

我有另一个看起来像这个'DataFrame2的表

Col1    Col2
A       E
B       Q
C       R
D       Z
Run Code Online (Sandbox Code Playgroud)

我想根据此表重命名我的第一个数据框的列,以便它出来:

E    Q    R    Z
1    2    3    4
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用plyr库进行循环.这是我试过的命令:

library(plyr)
for (i in names(DataFrame1[,3:336])) #renaming columns 3 to 336
    { 
        rename(DataFrame1,
         replace = c(i = DataFrame2[DataFrame2$Col1 == i, 2])) 
    }
Run Code Online (Sandbox Code Playgroud)

我的想法是DataFrame1中的每一列,通过查找DataFrame2中的列重命名该列.

这会产生N行错误"以下from值不存在于x:i"中,其中n是DataFrame1中存在的行数

感谢您提供的任何帮助!

r

5
推荐指数
1
解决办法
4126
查看次数

Pycharm 将 Python 模板语言切换为 Django

我最近在一台新电脑上启动了一个 django 项目,最近发现了 pycharm 并且到目前为止我很喜欢它。我在网上搜索了我的问题并阅读了设置 pycharm 以识别 django 模板语法就像设置一样简单 -> Python 模板语言 -> 从下拉列表中选择 Django。

好吧,这一切都很好,但这个标签对我来说似乎不存在。

它在哪里 :(?

我能看到的最接近的是“实时模板”,但这似乎不是我正在寻找的选项卡。我错过了插件还是什么?

我很抱歉这个小问题,我似乎找不到任何有同样问题的人。对不起,如果它就在我眼前,而我只是一个哑巴。

pycharm

4
推荐指数
1
解决办法
1212
查看次数

标签 统计

c ×1

kernel ×1

linux-kernel ×1

pycharm ×1

python ×1

r ×1

sql ×1

sql-server ×1

t-sql ×1