Loading...
Searching...
No Matches
juce::RSAKey Class Reference

## Detailed Description

RSA public/private key-pair encryption class.

An object of this type makes up one half of a public/private RSA key pair. Use the createKeyPair() method to create a matching pair for encoding/decoding.

If you need to use this class in conjunction with a compatible enc/decryption algorithm on a webserver, you can achieve the same thing in PHP like this:

include ('Math/BigInteger.php'); // get this from: phpseclib.sourceforge.net
function applyToValue ($message, $key_part1, $key_part2)
{
$result = new Math_BigInteger();
$zero = new Math_BigInteger();
$value = new Math_BigInteger (strrev ($message), 256);
$part1 = new Math_BigInteger ($key_part1, 16);
$part2 = new Math_BigInteger ($key_part2, 16);
while (! $value->equals ($zero))
{
$result = $result->multiply ($part2);
list ($value, $remainder) = $value->divide ($part2);
$result = $result->add ($remainder->modPow ($part1, $part2));
}
return ($result->toBytes());
}
juce::RSAKey::applyToValue
bool applyToValue(BigInteger &value) const
Encodes or decodes a value.
juce::AccessibilityRole::list
@ list
Definition juce_AccessibilityRole.h:65

...or in Java with something like this:

public class RSAKey
{
static BigInteger applyToValue (BigInteger value, String key_part1, String key_part2)
{
BigInteger result = BigInteger.ZERO;
BigInteger part1 = new BigInteger (key_part1, 16);
BigInteger part2 = new BigInteger (key_part2, 16);
if (part1.equals (BigInteger.ZERO) || part2.equals (BigInteger.ZERO)
|| value.compareTo (BigInteger.ZERO) <= 0)
return result;
while (! value.equals (BigInteger.ZERO))
{
result = result.multiply (part2);
BigInteger[] div = value.divideAndRemainder (part2);
value = div[0];
result = result.add (div[1].modPow (part1, part2));
}
return result;
}
}
juce::BigInteger
An arbitrarily large integer class.
Definition juce_BigInteger.h:51
juce::RSAKey::RSAKey
RSAKey()
Creates a null key object.
juce::RSAKey::part2
BigInteger part2
Definition juce_RSAKey.h:172
juce::RSAKey::part1
BigInteger part1
Definition juce_RSAKey.h:172
juce::String
The JUCE String class!
Definition juce_String.h:67

Disclaimer: neither of the code snippets above are tested! Please let me know if you have any corrections for them!

The documentation for this class was generated from the following file:

- juce_cryptography/encryption/juce_RSAKey.h

## Public Member Functions

| RSAKey ()
| Creates a null key object.
| RSAKey (const String &stringRepresentation)
| Loads a key from an encoded string representation.
bool | operator== (const RSAKey &other) const noexcept
bool | operator!= (const RSAKey &other) const noexcept
String | toString () const
| Turns the key into a string representation.
bool | isValid () const noexcept
| Returns true if the object is a valid key, or false if it was created by the default constructor.
bool | applyToValue (BigInteger &value) const
| Encodes or decodes a value.

## Static Public Member Functions

static void | createKeyPair (RSAKey &publicKey, RSAKey &privateKey, int numBits, const int *randomSeeds=nullptr, int numRandomSeeds=0)
| Creates a public/private key-pair.

## Protected Attributes

BigInteger | part1
BigInteger | part2

## Constructors and Destructors

## RSAKey() [1/2]

juce::RSAKey::RSAKey | ( |  | ) |

Creates a null key object.

Initialise a pair of objects for use with the createKeyPair() method.

Referenced by createKeyPair(), operator!=(), and operator==().

## RSAKey() [2/2]

juce::RSAKey::RSAKey | ( | const String & | stringRepresentation | ) |

explicit

Loads a key from an encoded string representation.

This reloads a key from a string created by the toString() method.

## Member Functions

## operator==()

bool juce::RSAKey::operator== | ( | const RSAKey & | other | ) | const

noexcept

References RSAKey().

## operator!=()

bool juce::RSAKey::operator!= | ( | const RSAKey & | other | ) | const

noexcept

References RSAKey().

## toString()

String juce::RSAKey::toString | ( |  | ) | const

Turns the key into a string representation.

This can be reloaded using the constructor that takes a string.

## isValid()

bool juce::RSAKey::isValid | ( |  | ) | const

noexcept

Returns true if the object is a valid key, or false if it was created by the default constructor.

## applyToValue()

bool juce::RSAKey::applyToValue | ( | BigInteger & | value | ) | const

Encodes or decodes a value.

Call this on the public key object to encode some data, then use the matching private key object to decode it.

Returns false if the operation couldn't be completed, e.g. if this key hasn't been initialised correctly.

NOTE: This method dumbly applies this key to this data. If you encode some data and then try to decode it with a key that doesn't match, this method will still happily do its job and return true, but the result won't be what you were expecting. It's your responsibility to check that the result is what you wanted.

References applyToValue().

Referenced by applyToValue().

## createKeyPair()

void juce::RSAKey::createKeyPair | ( | RSAKey & | publicKey,
|  | RSAKey & | privateKey,
|  | int | numBits,
|  | const int * | randomSeeds = nullptr,
|  | int | numRandomSeeds = 0 )

static

Creates a public/private key-pair.

Each key will perform one-way encryption that can only be reversed by using the other key.

The numBits parameter specifies the size of key, e.g. 128, 256, 512 bit. Bigger sizes are more secure, but this method will take longer to execute.

The randomSeeds parameter lets you optionally pass it a set of values with which to seed the random number generation, improving the security of the keys generated. If you supply these, make sure you provide more than 2 values, and the more your provide, the better the security.

References createKeyPair(), and RSAKey().

Referenced by createKeyPair().

## Member Data Documentation

## part1

BigInteger juce::RSAKey::part1

protected

## part2

BigInteger juce::RSAKey::part2

protected

### Purchase

Get JUCE

### Discover

What's New in JUCE Features

### Learn

Documentaion Tutorials Made with JUCE Resources

### Support

JUCE Forum Newsletter Archive

### About

Contact Us JUCE Legal JUCE Licensing FAQ

### Events

Audio Developer Conference
© Raw Material Software Limited