求生成BT种子所需的源代码或者类库

haoshenghan 2005-04-16 11:30:10
最近研究了一段时间BT种子的格式,使用找到的SHA1类自己编写制作BT种子的程序,可是花费了很大力气最后发现这么个问题:我用 上海滩.mp3(大小3.3M) 和 让我们荡起双桨.mp3(大小2.2M) 两首歌曲做实验,分别用completedir和我自制的程序作比较,发现制作出来的种子中 让我们荡起双桨.mp3 这首歌曲的两个种子是一模一样的,可是 上海滩.mp3 就出现问题了,两个种子的SHA1码稍有不同,我自制的种子里面的SHA1码比completedir制作的SHA1码多了一个“?”,而completedir制作出的种子里面那个位置只是一个“ ”(空格)而已?这使我十分困惑,需求大家的帮助!
...全文
1078 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
leojay 2005-04-20
  • 打赏
  • 举报
回复
我看了你的程序。SHA1部分应该没有问题。
不过你的程序可能有点问题。
你有一段是这样写的:
for(int j=0; j<20; j++)
{
if(acDigest[j]==0)
{
acDigest[j] = ' ';
memset(&acDigest[j-1],' ',1);

}
}
当j==0时,memset那部分就会有问题了。
还有,为什么要在acDigest[j]==0时把acDigest[j]改为空格呢?我看BitComet生成的.torrent文件里没有改嘛。
goodheartppl 2005-04-20
  • 打赏
  • 举报
回复
萒2?id&疠昅?w?.声
陰軞鯤搈T搑鄌a?+騗"藿堭?@G靊靮

{吾xz[~i1囔;?禿⑻5龛讥?膥S?!棸YMl
P萒2?id&疠昅?w?.声
陰軞鯤搈T搑鄌a?+騗"藿堭?@G靊靮

z唽D勋f?/;<旲貫懙戀o禷葑敜p坾b唻堠m4Q觫憦众苃0s'戉{g?鎌#p}C厶?a朏b7?V

z唽D勋f?/;<旲貫懙戀o禷葑敜p坾b唻堠m4Q觫憦众苃0s'戉{g?鎌#p}C厶?a朏b7?V

h:巨 緺?挐贛犐??臥?肣?$壠(藀吱,罈垻欃?Y?辀瀔睹?ee
h:巨f 緺?挐贛犐??臥?肣?$壠(藀吱,罈垻欃?Y?辀瀔睹?ee


leojay 2005-04-19
  • 打赏
  • 举报
回复
之前看过一下.torrent文件的文件格式。

记得好像并不是你说的“通常每262144个byte”,而是在文件中指定多少个字节做一次SHA1。细节部分我记不得了。

你所说的总是差一个"?"是什么意思呢?多一个字节?少一个字节?还是有一个字节数据不同?

你说你试了多个SHA-1程序,那么,其它的程序都是这样吗?你做出来的.torrent文件,那些BT软件认吗?
leojay 2005-04-19
  • 打赏
  • 举报
回复
你这样说我也看不出什么来。
要不这样吧。你把上海滩.mp3,completedir生成的.torrent文件以及你自己生成的.torrent文件这三个文件打个包发给我,我来看看吧。不过要明天才有空了。

我的email:
mousemouse521
at 也就是 @ 啦
gmail
dot 也就是 . 啦
com

看得明白吧。 :)
haoshenghan 2005-04-19
  • 打赏
  • 举报
回复
其实也不一定总是空格被替换成问号,有时会变成字母,比如下面是上海滩.mp3 通过completedir生成
SHA1值和我自己生成的SHA1值得对比,上边的是completedir生成的,下边的是我自己的,请注意!最后一行“巨”字后面的空格“ ”被错误的变成了字母“f”,我百思不得其解:

{吾xz[~i1囔;?禿⑻5龛讥?膥S?!棸YMl
P萒2?id&疠昅?w?.声
陰軞鯤搈T搑鄌a?+騗"藿堭?@G靊靮

{吾xz[~i1囔;?禿⑻5龛讥?膥S?!棸YMl
P萒2?id&疠昅?w?.声
陰軞鯤搈T搑鄌a?+騗"藿堭?@G靊靮

z唽D勋f?/;<旲貫懙戀o禷葑敜p坾b唻堠m4Q觫憦众苃0s'戉{g?鎌#p}C厶?a朏b7?V

z唽D勋f?/;<旲貫懙戀o禷葑敜p坾b唻堠m4Q觫憦众苃0s'戉{g?鎌#p}C厶?a朏b7?V

h:巨 緺?挐贛犐??臥?肣?$壠(藀吱,罈垻欃?Y?辀瀔睹?ee
h:巨f 緺?挐贛犐??臥?肣?$壠(藀吱,罈垻欃?Y?辀瀔睹?ee

haoshenghan 2005-04-19
  • 打赏
  • 举报
回复
"?"就是一个问号,我自制的bt种子中唯一的问题就是有的SHA1值本来应该是" "(空格),可是却变成了问号“?”,我反复调试也不能解决,请帮忙,为了图方便,我使用了completedir默认的piecelength大小,即262144个字节,谢谢
haoshenghan 2005-04-18
  • 打赏
  • 举报
回复
应该不是SHA1算法的问题,我换了好几个别人的SHA1算法还是不行,我大致描述一下自己的思路:

制作BT种子必须先把要制成种子的源文件以二进制形式读到内存变量中,然后通常每262144个byte的二进制文件作一次SHA1运算,但是并不是直接把结果连接起来连接就算完事,要做如下处理:

for(int j=0; j<20; j++)
{
if(acDigest[j]==0)
{
acDigest[j] = 0x0A;
}
}

之后就可以把所有结果连接起来了,可是不知什么原因,我得到的最终SHA1值和completedir得到的SHA1值总是差一个"?",completedir算出来的是一个“ ”(空格),让我百思不得其解,请各位前辈指点迷津!
leojay 2005-04-18
  • 打赏
  • 举报
回复
会不会是你的SHA-1的算法实现有问题呢?
我用的SHA-1库
"abc"SHA-1的结果
A9993E36 4706816A BA3E2571 7850C26C 9CD0D89D

"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"SHA-1的结果
84983E44 1C3BD26E BAAE4AA1 F95129E5 E54670F1

100万个"a"SHA-1的结果
34AA973C D4C4DAA4 F61EEB2B DBAD2731 6534016F
haoshenghan 2005-04-18
  • 打赏
  • 举报
回复
看来没什么希望得到答案了
haoshenghan 2005-04-17
  • 打赏
  • 举报
回复
没关系,进者有分!
Practise_Think 2005-04-17
  • 打赏
  • 举报
回复
目前我还没看到过公开BT的C++源码,如果楼主有的话,可否发我一份,我也想研究研究
practise_think@163.com
haoshenghan 2005-04-17
  • 打赏
  • 举报
回复
上面把SHA128缩写成SHA1,请不要误解
tbcookie 2005-04-17
  • 打赏
  • 举报
回复
学习学习
haoshenghan 2005-04-17
  • 打赏
  • 举报
回复
看来这completedir的源代码还真不好找啊
mousubin 2005-04-16
  • 打赏
  • 举报
回复
没有,抱歉
haoshenghan 2005-04-16
  • 打赏
  • 举报
回复
如果哪位前辈有completedir的或者类似软件的源代码我会倾囊送分,多谢!
haoshenghan 2005-04-16
  • 打赏
  • 举报
回复
我在这个问题上已经停滞不前了很长时间了,各位前辈如果有制作BT种子的源代码或者类库请告诉我,即使没有源代码,只是一个控制台程序也可以!万分感谢!

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧