请教BCB里的Base64加密有没有能直接加密文件流的方法

作者&投稿:氐婕 (若有异议请与网页底部的电邮联系)
base64 加密后可以还原回去,这种加密不就没有安全性可言了?~

BASE64不是用来加密的。你看看经过BASE64编码后的字符串,全部都是由标准键盘上面的常规字符组成,这样编码后的字符串在网关之间传递不会产生UNICODE字符串不能识别或者丢失的现象。你再仔细研究下EMAIL就会发现其实EMAIL就是用base64编码过后再发送的。然后接收的时候再还原。
还有一种情况下用BASE64编码也很好,比如一个图片文件,或者其他任何二进制文件。我可以把它编码成字符串。这样用XML或者数据库就能直接以文本的方式来存储这些文件了。

具体代码如下:
<?php
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, '');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
echo $file_contents;
?>
​PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。
它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,
执行效率比完全生成HTML标记的CGI要高许多;
PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。

下载 TomCrypt 通用加密库
编译出 Lib
--------------------------------------------------------------------
// 调用

String a = "";

File2Text(&a, "c:\\1.jpg");
Text2File("c:\\2.jpg", &a);
---------------------------------------------------------------------
// 功能实现,自己在函数内加上一些可靠性验证也就差不多了

int __fastcall Bin2Text(String* OutText, TMemoryStream* pMS)
{
/* 二进制流数据转换为 base64 码 */

// 初始化输出字符串
*OutText = "";
// 计算输出字符串长度
unsigned long OutStringSize = 4 * (((unsigned long)pMS->Size + 2) / 3) + 1;
// 设置输出字符串长度
OutText->SetLength( OutStringSize );
// 置内存流初始点
pMS->Position = 0;
// 开始转换
int Result = base64_encode (
(unsigned char*)pMS->Memory, (unsigned long)pMS->Size,
(unsigned char*)OutText->c_str(), &OutStringSize );
// 返回转换结果
return Result;
}
//---------------------------------------------------------------------------

int __fastcall File2Text(String *OutText, String Filename)
{
/* 输入文件转换为 base64 码 */

// 创建内存流
TMemoryStream* pMS = new TMemoryStream;
// 载入文件
pMS->LoadFromFile(Filename);
// 置指针初始位置
pMS->Position = 0;
// 开始转换,并将输出内容保存到 OutText
int Result = Bin2Text(OutText, pMS);
// 删除内存对象
delete pMS;
// 反馈结果
return Result;
}
//---------------------------------------------------------------------------

int __fastcall Text2File(String Filename, String* InText)
{
/* base64 码转换为 二进制文件 */

// 创建内存流
TMemoryStream* pMS = new TMemoryStream;
// 通过输入的 base64 指针信息转换为 二进制流
int Result = Text2Bin(pMS, InText);
// 置指针初始位值,保存文件
pMS->Position = 0;
pMS->SaveToFile(Filename);
// 删除对象
delete pMS;
// 反馈结果
return Result;
}
//---------------------------------------------------------------------------

int __fastcall Text2Bin(TMemoryStream* pMS, String* InText)
{
/* base64 转换为二进制流 */

// 获得 base64 长度
unsigned long* pStrSize = new unsigned long;
*pStrSize = InText->Length();
// 获得 base64 长度
unsigned long StrSize = InText->Length();
// 清除对象信息
pMS->Clear();
// 设置长度
pMS->Size = StrSize;
// 转换
int Result = base64_decode (
(unsigned char*)InText->c_str(),
StrSize,
(unsigned char*)pMS->Memory,
pStrSize
);
// 重新设置实际长度
pMS->Size = *pStrSize;
// 删除临时对象
delete pStrSize;
// 置内存流初始位置
pMS->Position = 0;
// 反馈信息
return Result;
}
//---------------------------------------------------------------------------


如何编写木马程序?
首先是编程工具的选择。目前流行的开发工具有C++Builder、VC、VB和Delphi,这里我们选用C++Builder(以下简称BCB);VC虽然好,但GUI设计太复杂,为了更好地突出我的例子,集中注意力在木马的基本原理上,我们选用可视化的BCB;Delphi也不错,但缺陷是不能继承已有的资源(如“死牛崇拜”黑客小组公布的BO2000源代码,是VC编写的...

DiskSerial硬盘序列号程序
DiskSerial.H,DiskSerial(VC).Lib 两个文件提供给 VC++(C\/C++) 程序员调用;DiskSerial.H,DiskSerial(BCB).Lib 两个文件提供给 BCB 程序员调用;DiskSerial.pas 文件提供给 Dephi 程序员调用;DiskSerial.bas 文件提供给 VB 程序员调用。调用格式请详见各自例子工程文件。本库文件供 VC++(C\/C++...

Vb和Vc的区别是什么?用它们编写出来的病毒程序有什么不同?
而且VC++是完全面向对象的编程工具,而VB是不够完全的面向对象编程工具,VC++是完全编译语言,VB是本地编译语言,不够完全,VC++效率高,封装性好,继承性高,VB效率相对低了很多,但界面友好,二者只能取其一,或者使用VC++,VB辅助(因为VB开发快),当然Delphi,BCB也是不错的选择。VB是最简单的,但...

峨眉山市18015063591: base64能不能加密特殊字符 -
阚丹乐知: base64的作用不是加密,而是用来避免“字节”中不能转换成可显示字符的数值. 比如0-32的控制字符,空格,制表符都不能被打印在纸上,base64只使用大写小写数字标点. 可以打印在纸上,数据可以在传统平面媒介上携带. md5是散列函数,提取数据的特征,输出是不可逆的散列值,用于代表某信息A而又不暴露信息A的内容.不直接用于加密文件.

峨眉山市18015063591: 如何判断一个字符串是否经过base64加密过 -
阚丹乐知: 1.标准base64只有64个字符(英文大小写、数字和+、/)以及用作后缀等号;2.base64是把3个字节变成4个可打印字符,所以base64编码后的字符串一定能被4整除(不算用作后缀的等号);3.等号一定用作后缀,且数目一定是0个、1个或2个.这是因为如果原文长度不能被3整除,base64要在后面添加\0凑齐3n位.为了正确还原,添加了几个\0就加上几个等号.显然添加等号的数目只能是0、1或2;4.严格来说base64不能算是一种加密,只能说是编码转换.使用base64的初衷.是为了方便把含有不可见字符串的信息用可见字符串表示出来,以便复制粘贴;

峨眉山市18015063591: 如何区分MD5密码加密和bese46加密? 是否还有其他加密方法?
阚丹乐知: MD5加密的一般都是16位或者32位,而base64不是16或者32位的.

峨眉山市18015063591: base64 不能加密哪些字符串 -
阚丹乐知: base64加密的结果还是字符串吗 首先,Base64算不上是一种加密算法. Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,它的目的是用ASCII中定义的可见字符去表示任意的二进制数据.之所以要这样做,是因为计算机中很多...

峨眉山市18015063591: base64 加密后可以还原回去,这种加密不就没有安全性可言了? -
阚丹乐知: BASE64不是用来加密的.你看看经过BASE64编码后的字符串,全部都是由标准键盘上面的常规字符组成,这样编码后的字符串在网关之间传递不会产生UNICODE字符串不能识别或者丢失的现象.你再仔细研究下EMAIL就会发现其实EMAIL就是用base64编码过后再发送的.然后接收的时候再还原.还有一种情况下用BASE64编码也很好,比如一个图片文件,或者其他任何二进制文件.我可以把它编码成字符串.这样用XML或者数据库就能直接以文本的方式来存储这些文件了.

峨眉山市18015063591: 请问现在开发项目一般用到哪些加密算法?
阚丹乐知: 现阶段开发项目主要用到BASE64、MD5、SHA、HMAC几种加密算法. BASE64编码算法不算是真正的加密算法. MD5、SHA、HMAC这三种加密算法,可谓是非可逆加密,就是不可解密的加密方法,我们称之为单向加密算法.我们通常只把他们作为加密的基础.单纯的以上三种的加密并不可靠.BASE64的加密解密是双向的,可以求反解. MD5、SHA以及HMAC是单向加密,任何数据加密后只会产生唯一的一个加密串,通常用来校验数据在传输过程中是否被修改.其中HMAC算法有一个密钥,增强了数据传输过程中的安全性,强化了算法外的不可控因素. 单向加密的用途主要是为了校验数据在传输过程中是否被修改.

峨眉山市18015063591: 请教关于 MD5和base64加密问题 -
阚丹乐知: 您好,我来为您解答: MD5 是不可逆算法 之所以把用户的 密码 MD5加密之后存储, 是怕数据库万一泄露,用户的密码不至于被别人知道 这是一种对用户负责的态度. 如果我的回答没能帮助您,请继续追问.

峨眉山市18015063591: 我有一段base64 的加密原文,但是我怎么判断解密后有无数据丢失?
阚丹乐知: 没有办法的,base64是没有措施保证解密后的密文数据完整性的. 它设计的主要目的是,把8位完整的字节,转换为电话线上可传输的ASCII字符. 是为了适应早期互联网设备的复杂传输状态的. 根本没考虑完整性的需求,完整性,以解密后原文自身保证 现在的电子邮件协议啥的采取BASE64只不过是为了兼容而设置的. 懂了么?

峨眉山市18015063591: base64编码过的图片还能加密吗,怎么在解码的时候判断有没有加密? -
阚丹乐知: 不知道.给图片加密,你可以使用超级加密3000.超级加密3000采用国际上成熟的加密算法和安全快速的加密方法,可以有效保障数据安全!具体操作方法:1下载安装超级加密3000.2 然后在需要加密的文件上单击鼠标右键选择加密.3 在弹出的文件加密窗口中设置文件加密密码就OK了.超级加密3000的下载地址你可以在百度上搜索超级加密3000,第一个就是.

峨眉山市18015063591: 关于base64加密算法的详细内容 -
阚丹乐知: base64严格的来说不能算一种加密方法,游戏也没有用这个来加密的.正确的讲这是一种编码解码的算法,算法是公开的任何人都可以根据编码原理做出解码的程序来.我这有VB6版的加密解密模块

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网