Reuse ISO hash if searching redump
This commit is contained in:
+3
-1
@@ -843,11 +843,13 @@ namespace IRDKit
|
|||||||
|
|
||||||
// Compute CRC32 hash
|
// Compute CRC32 hash
|
||||||
byte[] crc32;
|
byte[] crc32;
|
||||||
|
uint crc32UInt;
|
||||||
using (FileStream fs = File.OpenRead(isoPath))
|
using (FileStream fs = File.OpenRead(isoPath))
|
||||||
{
|
{
|
||||||
Crc32 hasher = new();
|
Crc32 hasher = new();
|
||||||
hasher.Append(fs);
|
hasher.Append(fs);
|
||||||
crc32 = hasher.GetCurrentHash();
|
crc32 = hasher.GetCurrentHash();
|
||||||
|
crc32UInt = BitConverter.ToUInt32(crc32);
|
||||||
// Change endianness
|
// Change endianness
|
||||||
Array.Reverse(crc32);
|
Array.Reverse(crc32);
|
||||||
}
|
}
|
||||||
@@ -905,7 +907,7 @@ namespace IRDKit
|
|||||||
Console.WriteLine($"Creating {irdPath} with Key from redump.org: {Convert.ToHexString(key)}");
|
Console.WriteLine($"Creating {irdPath} with Key from redump.org: {Convert.ToHexString(key)}");
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
IRD ird = new ReIRD(isoPath, key, layerbreak);
|
IRD ird = new ReIRD(isoPath, key, layerbreak, crc32UInt);
|
||||||
ird.Write(irdPath);
|
ird.Write(irdPath);
|
||||||
if (verbose)
|
if (verbose)
|
||||||
ird.Print();
|
ird.Print();
|
||||||
|
|||||||
+1
-1
@@ -270,7 +270,7 @@ namespace LibIRD
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// MD5 hashes for all decrypted files in the image
|
/// MD5 hashes for all decrypted files in the image
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks><see cref="FileHashes"/> files, 16-bytes per hash, alternating with each <see cref="FileHashes"/> entry</remarks>
|
/// <remarks><see cref="FileCount"/> files, 16-bytes per hash, alternating with each <see cref="FileHashes"/> entry</remarks>
|
||||||
public byte[][] FileHashes { get; private set; }
|
public byte[][] FileHashes { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
+3
-2
@@ -71,11 +71,12 @@ namespace LibIRD
|
|||||||
/// <param name="isoPath">Path to the ISO</param>
|
/// <param name="isoPath">Path to the ISO</param>
|
||||||
/// <param name="key">Disc Key, redump-style (AES encrypted Data 1)</param>
|
/// <param name="key">Disc Key, redump-style (AES encrypted Data 1)</param>
|
||||||
/// <param name="layerbreak">Layerbreak value, in sectors</param>
|
/// <param name="layerbreak">Layerbreak value, in sectors</param>
|
||||||
|
/// <param name="uid">Unique ID, crc32 hash of ISO</param>
|
||||||
/// <param name="region">Disc Region</param>
|
/// <param name="region">Disc Region</param>
|
||||||
public ReIRD(string isoPath, byte[] key, long? layerbreak = null, Region region = Region.NONE) : base()
|
public ReIRD(string isoPath, byte[] key, long? layerbreak = null, uint? uid = null, Region region = Region.NONE) : base()
|
||||||
{
|
{
|
||||||
// Generate Unique Identifier using ISO CRC32
|
// Generate Unique Identifier using ISO CRC32
|
||||||
UID = GenerateUID(isoPath);
|
UID = uid == null ? GenerateUID(isoPath) : (uint)uid;
|
||||||
|
|
||||||
// Determine ISO file size
|
// Determine ISO file size
|
||||||
long size = CalculateSize(isoPath);
|
long size = CalculateSize(isoPath);
|
||||||
|
|||||||
Reference in New Issue
Block a user