Bonjour tout le monde,
J'ai décidé de créer un crypteur/décrypteur d'image grâce à une fonction pseudo-aléatoire avec un seed.
Donc cette fonction change chaque pixel avec un modulo pour que le chiffre soit entre 0 et 255 (RGB).
Le problème c'est que ca ne marche pas trop quand le R = 0 ou le B ou le G.
Code source :
Merci d'avance, n'hésitez pas a poser des questions si vous n'avez psa compris ce que je veux faire ;)
J'ai décidé de créer un crypteur/décrypteur d'image grâce à une fonction pseudo-aléatoire avec un seed.
Donc cette fonction change chaque pixel avec un modulo pour que le chiffre soit entre 0 et 255 (RGB).
Le problème c'est que ca ne marche pas trop quand le R = 0 ou le B ou le G.
Code source :
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.VisualBasic;
namespace Onion_Image
{
public partial class Form1 : Form
{
double m = Math.Pow(2, 32);
double a = 1664525;
double c = 1013904223;
public double z;
Bitmap image;
Bitmap newImg;
public void Rand()
{
z = (a * z + c) % m;
}
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void normalToolStripMenuItem_Click(object sender, EventArgs e)
{
string response = Interaction.InputBox("Insert the first key : ");
z = Convert.ToInt32(response);
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "Image file|*.png;*.jpg";
if (ofd.ShowDialog() == DialogResult.OK)
{
image = new Bitmap(ofd.FileName);
newImg = new Bitmap(image.Size.Width, image.Size.Height);
for (int y = 0; y < image.Size.Height; y++)
{
for (int x = 0; x < image.Size.Width; x++)
{
double R;
double G;
double B;
Rand();
double _R = image.GetPixel(x, y).R;
R = (z + _R) % 255;
double _G = image.GetPixel(x, y).G;
G = (z + _G) % 255;
double _B = image.GetPixel(x, y).B;
B = (z + _B) % 255;
newImg.SetPixel(x, y, Color.FromArgb((int)R, (int)G, (int)B));
}
}
pictureBox1.Image = newImg;
}
}
private void encryptedToolStripMenuItem_Click(object sender, EventArgs e)
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "Image file|*.png;*.jpg";
if (sfd.ShowDialog() == DialogResult.OK)
{
newImg.Save(sfd.FileName);
}
}
private void encryptedToolStripMenuItem1_Click(object sender, EventArgs e)
{
string response = Interaction.InputBox("Insert the first key : ");
z = Convert.ToInt32(response);
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "Image file|*.png;*.jpg";
if (ofd.ShowDialog() == DialogResult.OK)
{
image = new Bitmap(ofd.FileName);
newImg = new Bitmap(image.Size.Width, image.Size.Height);
for (int y = 0; y < image.Size.Height; y++)
{
for (int x = 0; x < image.Size.Width; x++)
{
Rand();
double _R = image.GetPixel(x, y).R;
double R = (z - _R) % 255;
double _G = image.GetPixel(x, y).G;
double G = (z - _G) % 255;
double _B = image.GetPixel(x, y).B;
double B = (z - _B) % 255;
newImg.SetPixel(x, y, Color.FromArgb(255 - (int)R, 255 - (int)G, 255 - (int)B));
}
}
pictureBox1.Image = newImg;
}
}
private void normalToolStripMenuItem1_Click(object sender, EventArgs e)
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "Image file|*.png;*.jpg";
if (sfd.ShowDialog() == DialogResult.OK)
{
newImg.Save(sfd.FileName);
}
}
}
}
Merci d'avance, n'hésitez pas a poser des questions si vous n'avez psa compris ce que je veux faire ;)