Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Openssl
提交
335c4f09
T
Third Party Openssl
项目概览
OpenHarmony
/
Third Party Openssl
1 年多 前同步成功
通知
10
Star
18
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
Third Party Openssl
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
335c4f09
编写于
2月 20, 2001
作者:
U
Ulf Möller
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
BN_rand_range() needs a BN_rand() variant that doesn't set the MSB.
上级
5003a61b
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
23 addition
and
18 deletion
+23
-18
crypto/bn/bn_rand.c
crypto/bn/bn_rand.c
+15
-12
doc/crypto/BN_rand.pod
doc/crypto/BN_rand.pod
+8
-6
未找到文件。
crypto/bn/bn_rand.c
浏览文件 @
335c4f09
...
...
@@ -121,24 +121,27 @@ static int bnrand(int pseudorand, BIGNUM *rnd, int bits, int top, int bottom)
}
#endif
if
(
top
)
if
(
top
!=
-
1
)
{
if
(
bit
==
0
)
if
(
top
)
{
buf
[
0
]
=
1
;
buf
[
1
]
|=
0x80
;
if
(
bit
==
0
)
{
buf
[
0
]
=
1
;
buf
[
1
]
|=
0x80
;
}
else
{
buf
[
0
]
|=
(
3
<<
(
bit
-
1
));
buf
[
0
]
&=
~
(
mask
<<
1
);
}
}
else
{
buf
[
0
]
|=
(
3
<<
(
bit
-
1
)
);
buf
[
0
]
|=
(
1
<<
bit
);
buf
[
0
]
&=
~
(
mask
<<
1
);
}
}
else
{
buf
[
0
]
|=
(
1
<<
bit
);
buf
[
0
]
&=
~
(
mask
<<
1
);
}
if
(
bottom
)
/* set bottom bits to whatever odd is */
buf
[
bytes
-
1
]
|=
1
;
if
(
!
BN_bin2bn
(
buf
,
bytes
,
rnd
))
goto
err
;
...
...
@@ -192,7 +195,7 @@ int BN_rand_range(BIGNUM *r, BIGNUM *range)
do
{
/* range = 11..._2, so each iteration succeeds with probability >= .75 */
if
(
!
BN_rand
(
r
,
n
,
0
,
0
))
return
0
;
if
(
!
BN_rand
(
r
,
n
,
-
1
,
0
))
return
0
;
}
while
(
BN_cmp
(
r
,
range
)
>=
0
);
}
...
...
@@ -202,7 +205,7 @@ int BN_rand_range(BIGNUM *r, BIGNUM *range)
* so 3*range (= 11..._2) is exactly one bit longer than range */
do
{
if
(
!
BN_rand
(
r
,
n
+
1
,
0
,
0
))
return
0
;
if
(
!
BN_rand
(
r
,
n
+
1
,
-
1
,
0
))
return
0
;
/* If r < 3*range, use r := r MOD range
* (which is either r, r - range, or r - 2*range).
* Otherwise, iterate once more.
...
...
doc/crypto/BN_rand.pod
浏览文件 @
335c4f09
...
...
@@ -17,10 +17,12 @@ BN_rand, BN_pseudo_rand - generate pseudo-random number
=head1 DESCRIPTION
BN_rand() generates a cryptographically strong pseudo-random number of
B<bits> bits in length and stores it in B<rnd>. If B<top> is true, the
two most significant bits of the number will be set to 1, so that the
product of two such random numbers will always have 2*B<bits> length.
If B<bottom> is true, the number will be odd.
B<bits> bits in length and stores it in B<rnd>. If B<top> is -1, the
most significant bit of the random number can be zero. If B<top> is 0,
it is set to 1, and if B<top> is 1, the two most significant bits of
the number will be set to 1, so that the product of two such random
numbers will always have 2*B<bits> length. If B<bottom> is true, the
number will be odd.
BN_pseudo_rand() does the same, but pseudo-random numbers generated by
this function are not necessarily unpredictable. They can be used for
...
...
@@ -45,7 +47,7 @@ L<RAND_add(3)|RAND_add(3)>, L<RAND_bytes(3)|RAND_bytes(3)>
=head1 HISTORY
BN_rand() is available in all versions of SSLeay and OpenSSL.
BN_pseudo_rand() was added in OpenSSL 0.9.5
, and BN_rand_range()
in OpenSSL 0.9.6a.
BN_pseudo_rand() was added in OpenSSL 0.9.5
. The B<top> == -1 case
and the function BN_rand_range() were added
in OpenSSL 0.9.6a.
=cut
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录