Tuesday, November 16, 2010

Hashing a message into an elliptic curve group

I wanted a hash function (h) defined as follows for an implementation that I'm working on these days:

h : {0,1}* → G

This means that h maps a bit string of any length to a point of the the elliptic curve group G.

These sort of functions are quite common in literature and I came up with a quick fix solution for one :-) (and I'm sure there are much better implementations out there).

Here's the code:


import it.unisa.dia.gas.jpbc.Element;
import it.unisa.dia.gas.jpbc.Pairing;
import it.unisa.dia.gas.plaf.jpbc.pairing.CurveParams;
import it.unisa.dia.gas.plaf.jpbc.pairing.PairingFactory;

import java.io.InputStream;
import java.math.BigInteger;

import org.bouncycastle.crypto.digests.SHA256Digest;

public class Digest {

private Element gElem = null;
private Pairing pairing = null;

public Digest() throws Exception {
CurveParams curveParams = new CurveParams();
curveParams.load(Digest.class.getClassLoader().getResourceAsStream("a_181_603.properties"));

//Load private key
InputStream fis = Digest.class.getClassLoader().getResourceAsStream("keys/digest/g");
byte[] tmp = new byte[1024];
int read = fis.read(tmp);

byte[] gBytes = new byte[read];
System.arraycopy(tmp, 0, gBytes, 0, read);

this.pairing = PairingFactory.getPairing(curveParams);
this.gElem = this.pairing.getG1().newElement();
this.gElem.setFromBytes(gBytes);
}


public byte[] createHash(byte[] data) throws Exception {

//Create a sha 256 of the message
SHA256Digest dgst = new SHA256Digest();
dgst.reset();
dgst.update(data, 0, data.length);
int digestSize = dgst.getDigestSize();
byte[] hash = new byte[digestSize];
dgst.doFinal(hash, 0);

BigInteger val = new BigInteger(hash);

BigInteger order = this.pairing.getG1().getOrder();
BigInteger fact = val.mod(order);

Element gen = this.gElem.duplicate();
Element mul = gen.mul(fact);
return mul.toBytes();
}

}


This uses the jPBC library.

38 comments:

  1. Good post. Keep sharing such a new topic.

    php training in chennai

    ReplyDelete
  2. excellent blog very nice article I have read the article thanks for it web design company in velachery

    ReplyDelete
  3. I read this article. I think You have put a lot of effort to create this article. I appreciate your work.
    Visit us for Printing IDs & Accessories.

    ReplyDelete
  4. This comment has been removed by the author.

    ReplyDelete
  5. Harrah's Cherokee Casino Resort - Mapyro
    Harrah's Cherokee Casino Resort · Casino Information 대구광역 출장안마 · Gaming · 순천 출장샵 Hotel 원주 출장샵 Rooms. 통영 출장안마 All Rooms · 나주 출장마사지 Casino Rooms. All Salon Suites · Casino Information · Casino Rooms.

    ReplyDelete
  6. Ein großartiger Beitrag! Besonders der Abschnitt über die richtige bitte um Spende hat mir geholfen, meine eigene Kampagne besser zu gestalten. Es ist so wichtig, authentisch und klar um Unterstützung zu bitten. Danke für die wertvollen Tipps! Ich werde einiges davon direkt umsetzen.

    ReplyDelete
  7. Spenden sammeln für private Zwecke ist heute dank Online-Plattformen einfacher denn je. Ob medizinische Behandlungen, Herzenswünsche oder Notlagen – eine ehrliche Geschichte und klare Kommunikation sind entscheidend. Transparenz und Dankbarkeit stärken das Vertrauen der Unterstützer und erhöhen die Chancen auf eine erfolgreiche Spendensammlung. Jeder Beitrag kann Großes bewirken!

    ReplyDelete
  8. Crowdfunding soziale Projekte ist eine wunderbare Möglichkeit, gemeinsam gesellschaftliche Veränderungen zu bewirken. Viele kleine Beiträge ergeben zusammen große Unterstützung für wichtige Initiativen. Mit einer starken Idee, authentischem Auftritt und einer engagierten Community können soziale Projekte durch Crowdfunding echte Wirkung entfalten und nachhaltig helfen. Gemeinsam lässt sich viel erreichen!

    ReplyDelete
  9. Eine herzliche Bitte um Spende für Verein kann wahre Wunder bewirken. Wichtig ist, ehrlich darzustellen, wofür die Spende eingesetzt wird, und die Menschen emotional zu erreichen. Ein klarer Aufruf, verbunden mit echter Dankbarkeit, stärkt das Vertrauen und motiviert Unterstützer, sich für den Verein und seine Ziele einzusetzen.

    ReplyDelete
  10. Crowdfunding Österreich privat bietet eine tolle Möglichkeit, persönliche Projekte oder dringende Anliegen zu finanzieren. Über spezialisierte Plattformen können Privatpersonen unkompliziert Unterstützung sammeln. Mit einer authentischen Geschichte und klaren Zielen finden viele Menschen in Österreich großzügige Unterstützer, die helfen, Träume oder wichtige Vorhaben wahr werden zu lassen.

    ReplyDelete
  11. Ein gut formulierter Spendenaufruf kann entscheidend sein, um Menschen zum Helfen zu bewegen. Wichtig sind eine emotionale Ansprache, ein klar definiertes Ziel und echte Dankbarkeit. Je persönlicher und transparenter der Aufruf gestaltet ist, desto größer ist die Bereitschaft, sich zu engagieren und einen Beitrag zu leisten. Jeder Cent zählt!

    ReplyDelete
  12. Crowdfunding für private Zwecke wird immer beliebter, um persönliche Projekte, Notlagen oder besondere Wünsche zu finanzieren. Mit einer ehrlichen Geschichte und klaren Zielen können Unterstützer schnell gewonnen werden. Plattformen erleichtern den Zugang zu einer breiten Community, die hilft, private Vorhaben Wirklichkeit werden zu lassen. Jeder Beitrag macht einen Unterschied!

    ReplyDelete

  13. Eine gute Spendenaufruf Vorlage privat hilft, persönliche Anliegen überzeugend zu präsentieren. Wichtig sind eine emotionale Ansprache, klare Informationen und ein ehrlicher Hintergrund. Mit einer passenden Vorlage gelingt es leichter, Unterstützer zu gewinnen und Vertrauen aufzubauen, damit das private Projekt oder Anliegen erfolgreich gefördert werden kann.

    ReplyDelete

  14. Eine Lebensmittelbank leistet einen wichtigen Beitrag im Kampf gegen Armut und Lebensmittelverschwendung. Überschüssige Lebensmittel werden gesammelt und an Bedürftige verteilt. Durch Spenden und ehrenamtliches Engagement unterstützen viele Menschen diese wertvollen Einrichtungen und tragen dazu bei, soziale Gerechtigkeit und Nachhaltigkeit in unserer Gesellschaft zu fördern. Jede Hilfe zählt!

    ReplyDelete
  15. PayPal für Vereine kostenlos zu nutzen, ist eine attraktive Möglichkeit, Spenden und Mitgliedsbeiträge einfach und sicher abzuwickeln. Viele Plattformen bieten spezielle Konditionen für gemeinnützige Organisationen an. Damit können Vereine moderne Zahlungswege anbieten und gleichzeitig Verwaltungskosten sparen – eine echte Erleichterung für das Vereinsleben!

    ReplyDelete
  16. Spenden sammeln privat online wird immer beliebter, um schnell und unkompliziert Unterstützung für persönliche Projekte, Herzenswünsche oder Notfälle zu erhalten. Mit einer ehrlichen Geschichte und klaren Zielen erreichen Privatpersonen viele Menschen. Online-Plattformen erleichtern den Start von Spendenaktionen und zeigen, wie selbst kleine Beiträge eine große Wirkung entfalten können.

    ReplyDelete
  17. Eine höfliche und klare Bitte um Spende Formulierung ist entscheidend, um Unterstützung zu erhalten. Wichtig ist, den Zweck der Spende transparent zu machen und den potenziellen Spender direkt anzusprechen. Ein herzlicher Ton und ein authentischer Aufruf schaffen Vertrauen und erhöhen die Bereitschaft, zu helfen. Jeder Beitrag zählt und macht einen Unterschied!


    ReplyDelete
  18. Spendenanfragen sollten immer klar und respektvoll formuliert sein. Wichtig ist, den Zweck der Spende deutlich zu machen und den Spendern zu zeigen, wie ihre Unterstützung einen Unterschied macht. Eine persönliche Ansprache und ein transparenter Umgang mit den Mitteln schaffen Vertrauen und erhöhen die Wahrscheinlichkeit, dass die Anfrage erfolgreich ist.

    ReplyDelete
  19. Spendenaktion Ideen können unglaublich vielfältig und kreativ sein. Ob ein Benefizlauf, ein Online-Fundraising-Event oder ein Flohmarkt – der Fantasie sind keine Grenzen gesetzt. Wichtig ist, dass die Aktion Spaß macht und die Teilnehmer sich mit dem guten Zweck identifizieren können. Mit der richtigen Idee wird jede Spendenaktion zu einem Erfolg!



    ReplyDelete
  20. Spenden sammeln ist eine wirkungsvolle Möglichkeit, Gutes zu tun und wichtige Projekte zu unterstützen. Ob für soziale Zwecke, persönliche Anliegen oder gemeinnützige Organisationen – mit Herz, Transparenz und Engagement erreicht man viele Menschen. Jede Spende, ob groß oder klein, kann einen bedeutenden Unterschied machen und echte Veränderungen bewirken.

    ReplyDelete
  21. Crowdfunding-Plattformen sind eine großartige Möglichkeit, innovative Ideen, Start-ups oder soziale Projekte zu finanzieren. Sie verbinden Menschen mit ähnlichen Interessen und ermöglichen gemeinschaftliche Unterstützung. Ob für kreative Vorhaben oder private Anliegen – Crowdfunding-Plattformen bieten Transparenz, Reichweite und die Chance, Visionen Wirklichkeit werden zu lassen. Jeder Beitrag zählt!

    ReplyDelete
  22. Eine gut gestaltete Spendenseite ist entscheidend für den Erfolg jeder Fundraising-Kampagne. Sie sollte übersichtlich, emotional ansprechend und informativ sein. Mit klaren Spendenzielen, bewegenden Bildern und einfachen Zahlungsmöglichkeiten wird das Vertrauen gestärkt und die Spendenbereitschaft erhöht. So können Unterstützer schnell helfen – direkt und unkompliziert.

    ReplyDelete
  23. Ein überzeugender Spendenaufruf erreicht Menschen emotional und motiviert sie zum Handeln. Wichtig sind eine klare Botschaft, ein konkretes Ziel und echte Dankbarkeit. Mit einer authentischen Geschichte und transparenter Kommunikation kann ein Spendenaufruf große Wirkung entfalten und viele Unterstützer gewinnen. Jede Spende hilft, gemeinsam Gutes zu bewirken!

    ReplyDelete
  24. Eine Crowdfunding Plattform bietet eine hervorragende Möglichkeit, Projekte durch die Unterstützung vieler Menschen zu finanzieren. Ob Start-ups, soziale Initiativen oder kreative Ideen – der direkte Kontakt zur Community stärkt Vertrauen und Reichweite. Mit einer guten Präsentation und klaren Zielen kann eine Crowdfunding Plattform entscheidend zum Projekterfolg beitragen.

    ReplyDelete
  25. Eine Spendenaktion starten ist ein wirkungsvoller Weg, um Unterstützung für ein wichtiges Anliegen zu gewinnen. Ob privat, gemeinnützig oder sozial – mit einer guten Idee, klarer Kommunikation und echtem Engagement lässt sich viel bewegen. Online-Plattformen erleichtern den Start und helfen, möglichst viele Menschen zu erreichen und zum Mitmachen zu motivieren.

    ReplyDelete
  26. Sehr hilfreicher Artikel! Besonders spannend finde ich, dass Crowdfunding Privatpersonen dabei unterstützt, eigene Projekte oder persönliche Anliegen zu finanzieren. Es zeigt, wie stark Gemeinschaft und Solidarität im digitalen Zeitalter wirken können.

    ReplyDelete
  27. Toller Beitrag! Ich finde es großartig, wie Crowdfunding privat genutzt werden kann, um persönliche Projekte oder auch unerwartete Ausgaben zu finanzieren. Es zeigt, dass gemeinschaftliche Unterstützung online viel bewirken kann.

    ReplyDelete