对康耐视VisionPro
视觉处理软件生成的VPP文件机型加密与解密。
using Cognex.VisionPro;
using Cognex.VisionPro.ToolBlock;
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using System.Security.Cryptography;
using System.Text;
using System.Windows.Forms;
namespace EncryptionVpp
{
/// <summary>
/// Description of MainForm.
/// </summary>
public partial class MainForm : Form
{
private readonly TripleDESCryptoServiceProvider _provider;
private CogToolBlock _toolBlock;
public MainForm()
{
InitializeComponent();
_provider = new TripleDESCryptoServiceProvider
{
Key = Encoding.ASCII.GetBytes("9JfSKsk7,f.:sEd4`@dr"),
IV = Encoding.ASCII.GetBytes(",.?@")
};
}
private void BtnLoadVppClick(object sender, EventArgs e)
{
_toolBlock = (CogToolBlock) CogSerializer.LoadObjectFromFile(@".\test.vpp");
cogToolBlockEditV21.Subject = _toolBlock;
}
private void BtnSaveClick(object sender, EventArgs e)
{
if (_toolBlock == null) return;
using (var stream = File.Create(@"\test3.aaa"))
{
using (var cs = new CryptoStream(stream, _provider.CreateEncryptor(), CryptoStreamMode.Write))
{
CogSerializer.SaveObjectToStream(_toolBlock, cs, typeof(BinaryFormatter));
cs.Flush();
}
}
}
private void BtnLoadVpp2_Click(object sender, EventArgs e)
{
using (var stream = File.OpenRead(@".\test3.aaa"))
{
using (var cs = new CryptoStream(stream, _provider.CreateDecryptor(), CryptoStreamMode.Read))
{
_toolBlock =
(CogToolBlock) CogSerializer.LoadObjectFromStream(
cs, typeof(BinaryFormatter));
cogToolBlockEditV21.Subject = _toolBlock;
}
}
}
}
}