InstallShield调用.net的dll实现des加密功能
来源:互联网 发布:外汇黄金走势软件 编辑:程序博客网 时间:2024/05/22 05:01
环境:Installshield 12,win xp,Vs2005(用vs2010试了好几天出错,出现函数不可调用),在is 12中建了installshield installscript msi工程
INSTALLSHIELD 中的主要代码:
prototype STRING DESInterface.DESEncrypt(STRING); //这个是对dl中l函数的申明
function OnFirstUIAfter()
STRING szTitle, szMsg1, szMsg2, szOption1, szOption2;
NUMBER bOpt1, bOpt2;
STRING szFeatureName1,szFeatureName2,szFeatureName3;
STRING szfilename,szFolder;
NUMBER nresult;
STRING szmsg1,szmsg2;
STRING xmlPath;
STRING szDLLName;
OBJECT ObjInvokeDll;
STRING strEncryptSERVER;
STRING strEncryptPWD;
STRING TEMP;
begin
Disable(STATUSEX);
bOpt1 = FALSE;
bOpt2 = FALSE;
if(NeedWriteXml=TRUE) then
xmlPath=INSTALLDIR^"\\ParamSet\\DataBaseInfo.xml";
szDLLName = SUPPORTDIR ^ "DESInterface.dll";
set ObjInvokeDll = CoCreateObjectDotNet(szDLLName, "DESInterface.DES"); //这个是加载dll对象
TEMP= ObjInvokeDll.DESEncrypt(PWD) //这个是调用函数
endif;
end;
.net c#中的代码(用vs2005写的)
特别提醒要把工程中的Properties下的AssemblyInfo.cs中的[assembly: ComVisible(false)修改成[assembly: ComVisible(true)]]
using System;
using System.Collections.Generic;
using System.Text;
using System.Security.Cryptography;
namespace DESInterface //注意这个命名空间和is 的对应
{
public class DES
{
public string keyString = "123456";//默认的密钥
public string DESEncrypt(string toEncryptString)//注意参数的类型
{
using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
{
byte[] toEncryptBytes = Encoding.UTF8.GetBytes(toEncryptString);
des.Key = ASCIIEncoding.ASCII.GetBytes(keyString);
des.IV = ASCIIEncoding.ASCII.GetBytes(keyString);
System.IO.MemoryStream ms = new System.IO.MemoryStream();
using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))
{
cs.Write(toEncryptBytes, 0, toEncryptBytes.Length);
cs.FlushFinalBlock();
cs.Close();
}
string encryptedString = Convert.ToBase64String(ms.ToArray());
ms.Close();
return encryptedString;
}
}
public string DESDecrypt(string toDecryptString)
{
byte[] toDecryptBytes = Convert.FromBase64String(toDecryptString);
using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
{
des.Key = ASCIIEncoding.ASCII.GetBytes(keyString);
des.IV = ASCIIEncoding.ASCII.GetBytes(keyString);
System.IO.MemoryStream ms = new System.IO.MemoryStream();
using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write))
{
cs.Write(toDecryptBytes, 0, toDecryptBytes.Length);
cs.FlushFinalBlock();
cs.Close();
}
string decryptedString = Encoding.UTF8.GetString(ms.ToArray());
ms.Close();
return decryptedString;
}
}
}
}
如果还有问题一起探讨一下:qq 1009099161
- InstallShield调用.net的dll实现des加密功能
- .Net DES对称加密的实现
- InstallShield如何调用c++的dll
- InstallShield如何调用c++的dll
- 用jni方式传递DES加密字符串 - 补充"java调用vc写的dll"
- javascript实现的DES加密
- java实现的des加密
- DES加密的python实现
- .net实现md5加密 sha1加密 sha256加密 sha384加密 sha512加密 des加密解密
- Java与.NET的DES加密
- DES加密.net与java的纠缠
- 【.net】3des加密
- .NET DES加密、解密
- (学习笔记)Java的3DES与DES加密实现
- php实现和c#一致的DES加密解密 (php中调用方法)
- 用C实现DES的加密
- 3DES加密java的实现代码
- DES加密与解密算法的实现
- InstallShield安装新版本时卸载老版本
- JavaScript脚本代码大全
- Nand Flash与Nor Flash
- Android 4.0设计规范的10大改变
- 递归打印某个对象所在继承体系中的所有类及声明的属性
- InstallShield调用.net的dll实现des加密功能
- 重重地记一笔--PHP无法上传图片
- Java Daemon线程
- 关于内存DC绘图防止屏幕闪烁说明(亦即双缓存技术) .
- 现在就开始使用HTML5的十大原因
- Hello, Android!
- Android进阶2之PopupWindow弹窗(有点悬浮窗的感觉)
- DM8168心得之从sd卡烧写到nand
- iOS开发:系统进度条显示百科